【发布时间】:2022-11-11 04:21:08
【问题描述】:
我正在尝试在 Excel 中创建一个可以接受单个引用或范围的 TextSplit 函数。如果是单个字符串,则返回子字符串数组。如果它是一个范围,它将返回一个子字符串数组的数组。下面的代码是我正在使用的。单个字符串可以正常工作,但是当我将其传递给单个列范围时,它会给我一个#VALUE!错误。
注释行有效。如果我将 Array 的结果存储到 arr Excel 会显示一个“测试”字符串网格。如果改为将 TextSplit 设置为 arr(1) 我会得到一个类似于单个字符串版本的子字符串数组。
我不知道我做错了什么。我是一位老 Java 开发人员,不熟悉 Excel 中的 VBA 脚本。任何帮助,将不胜感激。
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
【问题讨论】:
-
你实际上是怎么称呼它的?如果来自单元格,则不太可能按原样工作,因为您有一个锯齿状数组。
-
您需要返回一个大小为 (# of input texts) x (max. size of arrays from split texts) 的单个二维数组
-
是的,我从一个单元格中调用它作为一个函数。所以你们都说它需要有一个设定的列宽,问题是拆分文本数组中可能有可变长度(我的测试数据中没有,但VBA不知道)。我会试试的。谢谢你。
标签: arrays excel vba return-value