我试图将存储在制表符分隔的文本文件中的公式加载到工作表的范围中.我已经使用函数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
结果输出:
我想知道是否有办法将从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
这是数组类型:
并预期产量: