Libre Calc - 从 CSV 字符串填充单元格

问题描述 投票:0回答:1

如何通过 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 填充了数据。实现这一目标的最佳方法是什么?

libreoffice-calc libreoffice-basic
1个回答
0
投票

您是否想将文本字符串拆分为单独的矩形数组元素?我会这样写:

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")}

Result_demo

© www.soinside.com 2019 - 2024. All rights reserved.