c# - 如何将不连续的单元格传递给 Excel UDF

标签 c# excel excel-udf

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

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

最佳答案

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

如果是,将参数括在括号中 .例如,对于这样的 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 等内置函数相比,额外的一组括号。

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

关于c# - 如何将不连续的单元格传递给 Excel UDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14512428/

相关文章:

C# 使用 xpath 解析 html

c# - 哪种机制是扩展 Dictionary 以处理丢失键的更好方法,为什么?

excel - 当 Excel 单元格区域中的数据更新时提示消息框

excel - 如何在两个Excel工作表之间逐个比较单元格?

用于小型 XML 文件的 C# XmlDocument - 重量/性能

c# - 当应用程序在后台时在 Windows phone 8 中播放音频通知

php - Excel 下载卡住 188kb

excel - 使用 FindNext 的 UDF 似乎在没有警告的情况下中止

vba - 如何跨项目重用核心 VBA 函数 (UDF),但不在单元格插入函数中显示它们

excel - 当工作簿移动到与加载项不同的文件夹时,如何保留对加载项 UDF 的引用?