自定义函数,适用于 Excel 表中的结构化引用
Posted
技术标签:
【中文标题】自定义函数,适用于 Excel 表中的结构化引用【英文标题】:Custom function, that works with structured references in Excel tables 【发布时间】:2016-06-28 14:53:46 【问题描述】:如何在 Visual Basic 中编写 UDF
以用于可以使用如下结构化引用的应用程序:
=UDF([Colomn1])
或者这个:
=UDF(if(len([Colomn1])>1,[Colomn1]))
有什么想法吗?
@Rory,此函数适用于范围,但不适用于引用列。结果值重复。
Function udff(sRange As Range) As Variant
Dim valueArr As Variant
valueArr = sRange.Value
ReDim resArr(LBound(valueArr, 1) To UBound(valueArr, 1), LBound(valueArr, 2) To UBound(valueArr, 2))
For i = LBound(valueArr, 1) To UBound(valueArr, 1)
For j = LBound(valueArr, 2) To UBound(valueArr, 2)
resArr(i, j) = valueArr(i, j) & "!"
Next j
Next i
udff = resArr
End Function
【问题讨论】:
当您说len(Column1)
时,这是什么意思?行数或其他。您可以使用 Function
定义所需的功能
结构化引用只返回一个范围,因此它与任何其他 UDF 相同。
这应该在使用编辑的原始问题中。不在 cmets 中
【参考方案1】:
您的语法似乎错误。 [Colomn1] 应该是 [@Colomn1](并且可能拼写正确)。
Function udf(rng As Range)
udf = rng * 2
End Function
不要将关联完整列引用与真正的工作表范围引用(例如 A1 或 A:A)与 ListObject(aka 结构化)表混淆参考文献。
【讨论】:
Synax 没有错。内置函数可以很好地与 [Colomn1] 一起使用。 [@Colomn1] 比 [Colomn1] 慢,因为在第一个 Excel 循环值中,第二个 Range 作为参数传递 见附录。以上是关于自定义函数,适用于 Excel 表中的结构化引用的主要内容,如果未能解决你的问题,请参考以下文章
编写自定义函数:建立双向链表,该链表有20个结点,20个结点所需的数值由随机函数产生。 编写自定义函数: