如何通过 Libre Calc 中的宏函数从 csv 字符串填充多个单元格?
示例功能
Function GetCsv
Dim csvData As String
csvData = "column1,column2,column3" & Chr(10) & "1,2,3" & Chr(10) & "4,5,6" & Chr(10) & "7,8,9"
GetCsv = csvData
End Function
我想调用单元格 A1 中的函数,在此示例中,A1:C4 填充了数据。实现这一目标的最佳方法是什么?
您是否想将文本字符串拆分为单独的矩形数组元素?我会这样写:
Function splitStr2Array(sSource As String, Optional sStrDelimiter As String, Optional sColDelimiter As String) As Variant
Dim aTemp As Variant
Dim aStr As Variant
Dim Result As Variant
Dim i As Long, j As Long, nStrLen As Long
If IsMissing(sStrDelimiter) Then sStrDelimiter = Chr(10)
If IsMissing(sColDelimiter) Then sColDelimiter = ","
On Error Resume Next
aTemp = Split(sSource, sStrDelimiter)
aStr = Split(aTemp(0), sColDelimiter)
nStrLen = UBound(aStr)
ReDim Result(0 To UBound(aTemp), 0 To nStrLen)
For i = 0 To UBound(aTemp)
aStr = Split(aTemp(i), sColDelimiter)
ReDim Preserve aStr(0 To nStrLen)
For j = 0 To nStrLen
Result(i, j) = aStr(j)
Next j
Next i
splitStr2Array = Result
End Function
并使用类似
的公式从单元格中调用它=SPLITSTR2ARRAY("column1,column2,column3" & CHAR(10) & "1,2,3" & CHAR(10) & "4,5,6" & CHAR(10) & "7,8,9")}