Arrays 在VBA中拆分数组的每个元素

Arrays 在VBA中拆分数组的每个元素,arrays,vba,split,Arrays,Vba,Split,我有一个一维数组,每个元素中有一堆文本(名称)。我想使用分隔符“|”拆分每个元素 Dim AllAssignees()作为字符串 '将三列导入AllAssignees数组 AllAssignees=GetArrayFromColumns(“原始数据”,2,“I”,“J”,“K”) Dim temparr()作为字符串 对于a=0到UBound(AllAssignees) 证明=InStr(1,AllAssignees(a),“|”) 选择案例证明 大小写为“0” temparr=Split(Al

我有一个一维数组,每个元素中有一堆文本(名称)。我想使用分隔符“|”拆分每个元素

Dim AllAssignees()作为字符串
'将三列导入AllAssignees数组
AllAssignees=GetArrayFromColumns(“原始数据”,2,“I”,“J”,“K”)
Dim temparr()作为字符串
对于a=0到UBound(AllAssignees)
证明=InStr(1,AllAssignees(a),“|”)
选择案例证明
大小写为“0”
temparr=Split(AllAssignees(a),“|”)
结束选择
下一个
这是我的代码,不起作用。它只识别一个元素并将其拆分,我得到一个只有两个元素的temparr


还有别的办法解决这个问题吗

根据我对您问题的理解,我提出了以下解决方案:

' Input Array
Dim arr(2) As String
arr(0) = "Tom | Kevin"
arr(1) = "Peter"
arr(2) = "Chris | Katy | Mary"

' Delimitor
Dim del As String
del = " | "

' Array containing Names as single objects
Dim names_array() As Variant

Dim number_of_elements As Integer
number_of_elements = 0

' Loop through all elements of the imput array
For i = 0 To (UBound(arr))
    ' Extract names sperated by del in original String (one element of imput array)
    Dim temp_names() As String
    temp_names = Split(arr(i), del)

    ' Keep track of the number of elements
    number_of_elements = number_of_elements + UBound(temp_names) + 1

    ' Add each name of the current input array object to names_array
    For j = 0 To (UBound(temp_names))
        Dim temp As Integer
        ' Some fancy math to get the number of preserved elements right (can probably be done better)
        temp = number_of_elements - (UBound(temp_names) + 1 - j)
        ReDim Preserve names_array(0 To temp) As Variant
        names_array(UBound(names_array)) = temp_names(j)
    Next j
Next i

' Now names_array should contain all names as individual objects in the array

然而,我只是假设您的输入看起来是这样的。(还有一个小小的免责声明:我已经很长时间没有在VBA中做太多工作了,所以有些内容可能看起来很粗略)

我认为问题可能是您在每次迭代中都覆盖了temparr。尝试将元素添加到数组中,而不是添加。请给出一个您拥有的数据示例?您的代码没有编译,因为您没有包含
GetArrayFromColumns
' Input Array
Dim arr(2) As String
arr(0) = "Tom | Kevin"
arr(1) = "Peter"
arr(2) = "Chris | Katy | Mary"

' Delimitor
Dim del As String
del = " | "

' Array containing Names as single objects
Dim names_array() As Variant

Dim number_of_elements As Integer
number_of_elements = 0

' Loop through all elements of the imput array
For i = 0 To (UBound(arr))
    ' Extract names sperated by del in original String (one element of imput array)
    Dim temp_names() As String
    temp_names = Split(arr(i), del)

    ' Keep track of the number of elements
    number_of_elements = number_of_elements + UBound(temp_names) + 1

    ' Add each name of the current input array object to names_array
    For j = 0 To (UBound(temp_names))
        Dim temp As Integer
        ' Some fancy math to get the number of preserved elements right (can probably be done better)
        temp = number_of_elements - (UBound(temp_names) + 1 - j)
        ReDim Preserve names_array(0 To temp) As Variant
        names_array(UBound(names_array)) = temp_names(j)
    Next j
Next i

' Now names_array should contain all names as individual objects in the array