我正在尝试在Excel中拆分数组本身内的数组项,但是一点都不运气。我想知道是否必须重新设置数组项,但同时我不确定这是否有意义或什至可行。我注意到的一件事是,数组项是数组中的string
类型,我也怀疑这可能是Type Mismatch
错误的根源-尽管数组是Dim
“ ed as” variant
。
一个例子可以在这里看到:
Sub testarr()
Dim arr As Variant, str As String, i As Integer
str = "{test:[{test this here||Can it be split inside the array?}]}"
arr = Split(str, "[{")
For i = LBound(arr) To UBound(arr)
arr(i) = Split(arr(i), "||")
Next i
End Sub
数组的期望结构示例:
尽管将arr变暗,但只要您像为它们分配值一样,单个元素就会变成字符串类型。你可以做这样的事情
Sub testarr()
Dim arr As Variant, str As String, i As Integer
Dim v As Variant
str = "{test:[{test this here||Can it be split inside the array?}]}"
arr = Split(str, "[{")
For i = LBound(arr) To UBound(arr)
Debug.Print TypeName(arr(i))
v = Split(arr(i), "||")
Next i
End Sub
更新根据OP的评论,可以尝试用新的拆分后的数组替换原始数组。
Sub testarr()
Dim arr As Variant, str As String, i As Integer
Dim v As Variant, s As String
str = "{test:[{test this here||Can it be split inside the array?}]}"
arr = Split(str, "[{")
For i = LBound(arr) To UBound(arr)
'Debug.Print TypeName(arr(i))
v = Split(arr(i), "||")
s = s & "||" & Join(v, "||")
Next i
arr = Split(s, "||")
End Sub
更新2同样,基于OP的注释代码,它将返回OP帖子中描述的结构。
Sub testarr()
Dim arr As Variant, str As String, i As Integer
Dim v As Variant, s As String
Dim arr1 As Variant
Dim dic As New Scripting.Dictionary
str = "{test:[{test this here||Can it be split inside the array?}]}"
arr = Split(str, "[{")
For i = LBound(arr) To UBound(arr)
v = Split(arr(i), "||")
If UBound(v) > 0 Then
dic.Add i, v
Else
dic.Add i, arr(i)
End If
Next i
ReDim arr1(dic.Count - 1)
For i = 0 To dic.Count - 1
arr1(i) = dic.Item(i)
Next i
End Sub
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句