自定义函数,适用于 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个结点所需的数值由随机函数产生。 编写自定义函数:

具有单元格引用输入的自定义函数

MGO 驱动程序中的更新查询,适用于 bson.M,但不适用于自定义结构

用PowerBI自定义函数批量处理复杂表格

自定义 Angular 结构指令仅适用于星号语法

从自引用表中获取层次结构数据