我有一个我想要的电子表格: 1)源单元,其具有诸如D2594D8-8的字符串。 您可以看到这是一个十六进制数字字符串,没有分隔符,除了单个破折号
2)一组标签和"目标"宏将从源单元格中单独复制每个单独的十六进制数字的单元格。
所以一个例子是:
步骤1:输入D1值:D2594D8-8
第2步:运行宏
第3步:细胞的值: C4更新为等于" D" (源单元格字符串中的第一个字符) D4更新为等于" 2" (源单元格字符串中的第二个字符) E4更新为等于" 5" (源单元格字符串中的thrid字符) 等....
我目前正在尝试:
Sub AssignData()
Dim wldData As Variant
UWParray = Array(Range("D1"))
Range("D4").Value = UWParray(0)
Range("D5").Value = UWParray(1)
Range("D6").Value = UWParray(2)
Range("D7").Value = UWParray(3)
End Sub
但这只会让我: "运行时错误' 9' 下标或范围
结果:
1 D2594D8-8 2
3
4
5
6
7
任何帮助将不胜感激!
提前致谢
答案 0 :(得分:3)
你的代码占用整个D1值并将其放入数组的第一个位置,所以当它去寻找第二个位置时,它不存在 - 因此"下标了范围"错误。以下代码有效。
Sub AssignData()
Dim wldData As Variant
Dim UWParray() As String
Dim i As Integer
ReDim UWParray(Len(Range("D1").Value))
For i = 0 To Len(Range("D1").Value)
UWParray(i) = Mid(Range("D1").Value, i + 1, 1)
Next
Range("D4").Value = UWParray(0)
Range("D5").Value = UWParray(1)
Range("D6").Value = UWParray(2)
Range("D7").Value = UWParray(3)
End Sub
答案 1 :(得分:2)
一个班轮:)
[c4].Resize(1, Len([d1].Value)) = Application.Transpose(Evaluate("=index(mid(D1,ROW(1:" & Len([d1].Value) & "),1),)"))
答案 2 :(得分:1)
这应该按照你的要求做到:
Dim my_array() As String
Dim my_String As String
Dim i As Integer
my_String = Range("D1").Value
'Replace "-" with nothing
my_String = Replace(my_String, "-", "")
'Split my string into individual characters and store in array/worksheet
ReDim my_array(Len(my_String) - 1)
For i = 1 To Len(my_String)
my_array(i - 1) = Mid(my_String, i, 1)
'Store values in excel sheet starting at C3
Cells(4, (2 + i)).Value = my_array(i - 1)
Next
您实际上并不需要使用数组将值存储到工作表的单元格中,但由于帖子标题,我添加了它。