Vin*_*ing 6 arrays string excel vba excel-vba
我有一个问题: 如何在开放和闭括号内的逗号之间拆分字符串并将每个字符串存储在数组变量中?
例:
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
Run Code Online (Sandbox Code Playgroud)
上面有一个输入字符串,我想在一个数组变量中存储三个,所以在逗号之间的子字符串,这些逗号位于开括号和闭括号内:
substr(0) = "u1 u1t_a"
substr(1) = "u2 u2t_b"
substr(2) = "s2 s2t_c"
substr(n) = "...n"
Run Code Online (Sandbox Code Playgroud)
到目前为止,我很难在VBA中使用循环和数组,所以我的代码就像一个暴力,它只能处理最多3个文本,因为代码会变长,所以我做了一个限制.
在这里查看我的代码:
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c )"
substr1 = Right(strinput, Len(strinput) - Find("(", strinput))
'Output: u1 u1t_a, u2 u2t_b, s2 s2t_c )
substr1f = Left(substr1, Find(",", substr1) - 1)
'Output: u1 u1t_a
substr2 = Right(substr1, Len(substr1) - Find("(", substr1))
'Output: u2 u2t_b, s2 s2t_c )
substr2f = Left(substr2, Find(",", substr2) - 1)
'Output: u2 u2t_b
substr3 = Right(substr2, Len(substr2) - Find("(", substr2))
'Output: s2 s2t_c )
substr3f = Left(substr3, Find(")", substr3) - 1)
'Output: s2 s2t_c
Run Code Online (Sandbox Code Playgroud)
我怎么能做这个循环?
Sid*_*out 10
这是你想要做的吗?我已经评论了代码,所以你可能没有理解它...并欢迎stackoverflow :)
Option Explicit
Sub Sample()
Dim Ar As Variant
Dim strinput As String, s As String
Dim i As Long
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
'~~> Replace ( and ) with ""
s = Replace(Replace(strinput, ")", ""), "(", "")
'~~> Split and store in an arry based on ","
Ar = Split(s, ",")
'~~> See what is there in the array
For i = LBound(Ar) To UBound(Ar)
Debug.Print Ar(i)
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
如果你想组合,Replace and Split那么你也可以使用它
Option Explicit
Sub Sample()
Dim Ar As Variant
Dim strinput As String
Dim i As Long
strinput = "( u1 u1t_a, u2 u2t_b, s2 s2t_c, s4 s4t_d, ...n )"
Ar = Split(Split(Split(strinput, "(")(1), ")")(0), ",")
'~~> See what is there in the array
For i = LBound(Ar) To UBound(Ar)
Debug.Print Ar(i)
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |