数组 – 如何将字符串类型数组转换为变体类型数组 – Excel VBA

我试图将存储在制表符分隔的文本文件中的公式加载到工作表的范围中.我已经使用函数Split(Expression As String,Delimiter)将每一行依次正确加载到一维数组中,但是遇到了有关返回的数组类型的问题.

Split函数只返回字符串类型数组,我需要一个变量类型数组来设置范围.这是因为使用字符串类型数组设置单元格的公式会导致单元格值设置为原始文本,即使字符串以等号开头也是如此.

'Example code to demonstrate the problem:
Sub Tester()
    Dim StringArr(1 To 3) As String
    StringArr(1) = "= 1"
    StringArr(2) = "= 2"
    StringArr(3) = "= 3"
    Range("Sheet1!$A$1:$C$1").Formula = StringArr
    'Cells display raw string until edited manually

    Dim VariantArr(1 To 3) As Variant
    VariantArr(1) = "= 1"
    VariantArr(2) = "= 2"
    VariantArr(3) = "= 3"
    Range("Sheet1!$A$2:$C$2").Formula = VariantArr
    'Cells display formula result correctly
End Sub

结果输出:

《数组 – 如何将字符串类型数组转换为变体类型数组 – Excel VBA》

我想知道是否有办法将从Split函数返回的数组转换为变量类型数组,最好没有循环.我知道我可以在一个循环中单独设置每个单元格公式,但我试图保持它尽可能高效和整洁.

我正在使用Microsoft Excel for Mac 2011,版本14.5.5. VBA正在推动我.

最佳答案 您可以使用
WorksheetFunction.Index(或Application.Index)将String数组转换为Variant / String数组:

Sub Test()

    StringArr = Split("=1 =2 =3")
    VariantArr = WorksheetFunction.Index(StringArr, 1, 0)
    Range("Sheet1!$A$1:$C$1").Formula = StringArr
    Range("Sheet1!$A$2:$C$2").Formula = VariantArr

End Sub

这是数组类型:

《数组 – 如何将字符串类型数组转换为变体类型数组 – Excel VBA》

并预期产量:

《数组 – 如何将字符串类型数组转换为变体类型数组 – Excel VBA》

点赞