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

从excel中单个单元格的值创建数组,excel,vba,Excel,Vba,我有一个电子表格,我想: 1) 一个源单元格,它将有一个字符串,如D2594D8-8。 您可以看到这是一个十六进制数字字符串,除了单破折号之外,没有分隔符 2) 一组标签和“目标”单元格,其中宏将分别从源单元格复制每个十六进制数字 例如: 步骤1:在D1中输入值:D2594D8-8 步骤2:运行宏 步骤3:单元格的值: C4更新为等于“D”(源单元格字符串的第一个字符) D4更新为等于“2”(源单元格字符串中的第二个字符) E4更新为等于“5”(源单元格字符串中的第三个字符) 等等 我目前正在尝

我有一个电子表格,我想: 1) 一个源单元格,它将有一个字符串,如D2594D8-8。 您可以看到这是一个十六进制数字字符串,除了单破折号之外,没有分隔符

2) 一组标签和“目标”单元格,其中宏将分别从源单元格复制每个十六进制数字

例如:

步骤1:在D1中输入值:D2594D8-8

步骤2:运行宏

步骤3:单元格的值: C4更新为等于“D”(源单元格字符串的第一个字符) D4更新为等于“2”(源单元格字符串中的第二个字符) E4更新为等于“5”(源单元格字符串中的第三个字符) 等等

我目前正在尝试:

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
七,

任何帮助都将不胜感激


提前感谢

您的代码获取整个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

这应该满足您的要求:

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
实际上,您不需要使用数组将值存储到工作表的单元格中,但我添加它是因为文章标题。

一行:)


您要求在文本中输入C4、D4、E4等,但您的代码尝试是D4、D5、D6等?
[c4].Resize(1, Len([d1].Value)) = Application.Transpose(Evaluate("=index(mid(D1,ROW(1:" & Len([d1].Value) & "),1),)"))