excel VBA – 从函数中返回可变长度的数组

我想在UDF函数中模拟内置的“text-to-fields”的结果。 我需要这样做,因为我的原始数据来自networking查询,我需要在单独的页面上使用结果并绘制这些结果。 对于绘图,我需要缺less的值来parsing空单元格,因为这是Excel图表显示缺失值的唯一select。

你不能这样做,因为有两个限制。

1)它不能将parsing的字段定位到另一个表单上。

2)尝试将数据值复制到目标工作表以parsing失败,因为text-to-field分析引用expression式,而不是引用的值。

3)我无法parsing原始数据表,然后将parsing的字段复制到目标工作表,因为没有expression式可以复制空单元格,它将转换为零值。 (毕竟,导致空单元格的expression式会自行清除!)

所以我需要一个DIY字段parsing器,而且在任何情况下,使用公式对于我的总体需求来说都比对内置函数进行macros观化(即使它能工作)更好。

我的领域看起来像这样:

calm S 10 S 10 G 20 

而且我希望他们能够像文本到字段一样进行parsing,这可以给出数字的数字,文本的string以及缺less的字段(即较短的读数)。

所以我用这个代码

 Function Explode(texte As String, Optional ByVal delimiter As String = " ") _ As String() ' mimic the text-to-fields, ' but allow inter-sheet references Explode = Split(texte, delimiter) End Function 

但要使用它,我必须预先定义函数调用单元格作为一个数组的一部分,这是固定的大小,我不知道如何有这个返回一个固定大小的数组可变数量的parsing字段。 我想从上面的示例数据是:

在这里输入图像说明

但是我得到的是:

在这里输入图像描述

请注意,空单元格必须是空的 – 不能只看空(不是“”string)。

编辑 :我怀疑我可能不得不创build一个设置分析字段的值,并清除其余的单元格为缺less的字段(我总是有最多四个字段),而不是返回它们,但我不是很VBA精通。 例如,获取两个单元格引用的东西,一个用于源引用,另一个用于parsing字段的目标列表。 然后从一个我可以embedded到表单中的函数中调用它。 基于副作用的编程

你可以让你的函数使用Redim Preserve返回一个固定的数组大小。

{=爆炸($ A $ 1,50, “”)}

 Function Explode(texte As String, ArraySize As Integer, Optional ByVal delimiter As String = " ") _ As String() Explode = Split(texte, delimiter) ReDim Preserve Explode(ArraySize- 1) End Function