如何将非连续单元格传递给Excel UDF

时间:2013-01-24 22:59:41

标签: c# excel excel-udf

在myUDF中,我可以引用一系列单元格,如“A1:A12”,但如何引用非连续单元格,如“A1,B4,H3”等。
我使用ExcelDNA,参数类型是对象 但它似乎需要字符串和一系列细胞,而不是非连续细胞

[ExcelArgument(AllowReference = true, Name = "Relations", Description = "a set of relations")]object rels

1 个答案:

答案 0 :(得分:2)

听起来您正在从代码中将公式输入到工作表及其参数中,并且您希望用户能够在Excel的公式栏中正常编辑公式。这是对的吗?

如果是这样, 将参数括在parens 中。例如,对于像这样的UDF ......

Public Function MyUDF(my_param As Range)
    'concatenate all cell values in a non-contiguous range:
    Dim rgCell As Range, rgArea As Range
    For Each rgArea In my_param.Areas
        For Each rgCell In rgArea
            MyUDF = MyUDF & CStr(rgCell.Value)
        Next rgCell
    Next rgArea
End Function

...在工作表单元格中输入如下:

=MyUDF((A1,A3,A7:A11,C8:E10))

与使用SUM等内置函数相比,请注意额外的一组parens。

你可能已经知道了BTW,当你在非连续范围内循环时,你必须遍历范围的区域,然后遍历每个区域的单元格;循环遍历范围内的单元格只会为您提供第一个区域中的单元格。