gpt4 book ai didi

excel - 将二维分隔字符串解析为范围

转载 作者:行者123 更新时间:2023-12-02 08:27:21 25 4
gpt4 key购买 nike

我有一个由行分隔的二维字符串,并且每行内由值分隔。

所以它是一个逗号分隔的字符串,每行末尾都有一个 EOL 标记。示例:

val1, val2, val3 ... valn [EOL]
val1, val2, val3 ... valn [EOL]
...
val1, val2, val3 ... valn [EOL]

如果我创建一个循环来通过 [EOL] split() 每一行,然后在该循​​环中创建另一个循环来通过 ',' split() 每个值,然后一次将每个值写入工作表中的一个单元格中永远,所以我正在寻找更有效的解决方案。

是否可以将字符串解析为二维数组/变体,然后将整个内容一次性写入命名范围?

最佳答案

我们可以按照@Macro Man 在评论中所说的去做。如果所有行都包含相同数量的逗号分隔值,那就很容易了。如果没有的话,事情会更加复杂。但仍然可以解决。

Option Base 0

Sub test()

sString = "val1, val2, val3 ... valn" & Chr(10) & "val1, val2 ... valn" & Chr(10) & "val1, val2, val3, val4 ... valn" & Chr(10) & "val1" & Chr(10)

Dim aDataArray() As Variant
Dim lLinesCount As Long
Dim lValuesCount As Long
Dim lMaxValuesCount As Long

aLines = Split(sString, Chr(10))
lLinesCount = UBound(aLines)
ReDim aDataArray(0 To lLinesCount, 0)

For i = LBound(aLines) To UBound(aLines)
aValues = Split(aLines(i), ",")
lValuesCount = UBound(aValues)
If lValuesCount > lMaxValuesCount Then lMaxValuesCount = lValuesCount
ReDim Preserve aDataArray(0 To lLinesCount, 0 To lMaxValuesCount)

For j = LBound(aValues) To UBound(aValues)
aDataArray(i, j) = aValues(j)
Next
Next

With ActiveSheet
.Range("B2").Resize(lLinesCount + 1, lMaxValuesCount + 1).Value = aDataArray
End With

End Sub

关于excel - 将二维分隔字符串解析为范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34962298/

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