gpt4 book ai didi

excel - 如何在vba中将字符串拆分为二维数组?

转载 作者:行者123 更新时间:2023-12-04 23:35:19 30 4
gpt4 key购买 nike

我希望能够将格式化的字符串(例如下面的字符串)拆分成一个数组(稍后我将使用它)。

示例字符串:(x, f), (5, 6), (6, 1), (7, 8), (8, 5), (9, 5), (10, 5), (11, 3) , (12, 4), (13, 1), (14, 6), (15, 2), (16, 10)

每组括号将是一个维度,其中的数字将构成另一个。例如 strArray (4, 2) 将导致括号 4,数字 2 -> 在这种情况下为 8。

我曾考虑过通过使用多个 SPLIT 函数来强制它,并且我已经研究了正则表达式来做到这一点。我有信心制作一维数组,但在二维数组中挣扎。

我正在使用 Microsoft Excel 2016,并且是 VBA 的中级程序员。

这是我尝试处理每个括号的一种方法,但它不会产生二维数组:

Sub EvaluateString(txtString as String)

txtArray = Split(txtSTring, "),(")

If IsEmpty(txtArray) Then L=0 Else L=UBound(txtArray)

'remove leading "(" and last ")"
txtArray(0) = Replace(txtArray(0), "(", "")
txtArray(L) = Replace(txtArray(L), ")", "")

For i = 0 to L
'Do something
next i

End Sub

最佳答案

有趣的问题。我建议使用几个 Application从原始字符串中“切片”两个一维数组,然后通过 Transpose 将它们“加入”到单个数组中的方法.

Sub Test()

'Prepare your string
Dim str As String: str = "(x, f), (5, 6), (6, 1), (7, 8), (8, 5), (9, 5), (10, 5), (11, 3), (12, 4), (13, 1), (14, 6), (15, 2), (16, 10)"
str = Replace(Replace(Replace(str, " ", ""), "(", ""), ")", "")

'Prepare your array
Dim arr As Variant: arr = Split(str, ",")
Dim lb As Long: lb = UBound(arr) + 1

'Prepare two "slicer" 1D-arrays
Dim slc1 As Variant: slc1 = Evaluate("TRANSPOSE((ROW(1:" & (lb / 2) & ")*2)-1)")
Dim slc2 As Variant: slc2 = Evaluate("TRANSPOSE(ROW(1:" & (lb / 2) & ")*2)")

'Slice your array and transpose it into a a single array to be used
With Application
arr = .Transpose(Array(.Index(arr, 1, slc1), .Index(arr, 1, slc2)))
End With

Debug.Print arr(4, 2)

End Sub

关于excel - 如何在vba中将字符串拆分为二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59717089/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com