我正在尝试在Excel中创建一个TextSplit函数,该函数既可以接受单个引用,也可以接受一个范围。
如果是单个字符串,则返回子字符串数组。
如果它是一个范围,它应该返回一个子字符串数组的数组。
单个字符串可以工作,但是当我传递给它单个列范围时,它给予我一个#VALUE!错误。
注解行起作用。
如果将Array的结果存储到arr,Excel将显示一个“test”字符串网格。
相反,如果我将TextSplit设置为arr(1),我会得到一个子字符串数组,类似于单个字符串的版本。
Function TextSplit(text, delimiter)
If IsArray(text) Then
Dim arr() As Variant: ReDim arr(0 To text.Count - 1)
For i = 1 To text.Count
arr(i-1) = Split(text(i), delimiter)
'arr(i-1) = Array("test", "test")
Next
TextSplit = arr
'TextSplit = arr(1)
Else
TextSplit = Split(text, delimiter)
End If
2条答案
按热度按时间qyyhg6bp1#
借助另一个问题Array and Split commands to create a 2 dimensional array
我可以解决你的问题,但是我仍然无法从你调用函数的单元格填充数组,就像用你的单个字符串填充旁边的列一样。如果是一列,你可以直接自动填充文本。split(cell,delimiter)如果你是在Excel中工作。
如果您使用vba并希望将拆分数组(如@Tim所说的二维数组)返回给sub:
使用功能
我对VBA也很陌生,所以在计算maxColumns时,我为冗余(如未填充testArray)提前道歉,我无法计算出这一点。第一次使用二维数组。
其他可能有帮助的问题:VBA UDF Return Array(我尝试使用带有{}的数组公式,但得到了与之前相同的值错误)
希望这个有用。
umuewwlo2#
我不知道发生了什么,但是我的代码的数组分支现在可以工作了。我已经弄乱了一些东西,但是我不知道为什么它可以工作了。()”声明是上述代码中的新声明,但是之前可能已经省略了。(这段代码在我的工作电脑上,但我是从个人电脑上写的,所以我不能复制和粘贴。我现在在工作电脑上。)
我所做的唯一其他更改是对arr数组的索引值进行的更改。
谢谢你的帮助,不知道出了什么问题,也不知道是怎么解决的。