从excel中的单个单元格的值创建数组

时间:2014-12-24 18:03:13

标签: excel excel-vba vba

我有一个我想要的电子表格: 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

任何帮助将不胜感激!

提前致谢

3 个答案:

答案 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),)"))

enter image description here

答案 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

您实际上并不需要使用数组将值存储到工作表的单元格中,但由于帖子标题,我添加了它。