gpt4 book ai didi

vba - excel VBA - 从函数中重新获得可变长度数组

转载 作者:行者123 更新时间:2023-12-04 21:00:07 29 4
gpt4 key购买 nike

我想在 UDF 函数中模拟内置“文本到字段”的结果。
我需要这样做,因为我的原始数据来自网络查询,我需要在单独的页面上使用结果并绘制这些结果。
对于绘图,我需要将缺失值解析为空单元格,因为这是 excel 图表将缺失值显示为间隙的唯一选项。

由于两个限制,您不能使用内置函数执行此操作;

1)它不能将解析的字段定位到另一张纸上。

2) 尝试将数据值复制到目标工作表以在那里解析它们失败,因为 text-to-fields 解析引用表达式,而不是它引用的值。

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

所以我需要一个 DIY 字段解析器,并且在任何情况下,使用公式比必须对内置函数进行宏化(即使它可以工作)更好地满足我的整体需求。

我的字段如下所示:

   calm
S 10
S 10 G 20

我希望它们像文本到字段一样进行解析,这将为数字提供数字,为文本提供字符串,以及 对于缺少的字段(即较短的读数。)

所以我使用了这段代码;
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

但是要使用它,我必须将函数调用单元预定义为数组的一部分,该数组是固定大小的,我不知道如何让它将可变数量的解析字段返回到固定大小的数组中。我从上面的示例数据中想要的是:

enter image description here

但我得到的是:

enter image description here

请注意,空单元格必须是空的 - 不仅仅是看起来是空的(不是 ""字符串)。

编辑 :
我怀疑我可能不得不创建一个子程序来设置解析字段的值并清除剩余字段的单元格(我总是最多有四个字段)而不是返回它们,但不是很精通 VBA。例如,获取两个单元格引用的东西,一个用于源引用,另一个用于解析字段的目标列表。然后从我可以嵌入工作表的函数中调用它。基于副作用的编程...

最佳答案

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

{=Explode($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

关于vba - excel VBA - 从函数中重新获得可变长度数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37935179/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com