问题标签 [excel-udf]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3908 浏览

excel - VBA用户定义函数复制单元格的值,文本形成和超链接?

给定一个简单的 excel 示例文件复制单元格的值、结构和超链接的 VBA 代码是什么?

即在单元格 B5 我们将调用=myCopyCellFunction(B2),我们将在 B2 处获得确切的单元格值

在此处输入图像描述

0 投票
1 回答
175 浏览

c# - 查找 Excel 自动化加载项的当前列

我正在尝试使用 C# 创建 Excel 自动化插件以向 Excel 添加新功能。像这个例子: http: //blogs.msdn.com/b/eric_carter/archive/2004/12/01/273127.aspx 我对这样的插件编程很陌生。

其中一个函数使用从当前列到引用停止列的引用行上的数字进行计算。

在 Excel 中使用该函数应如下所示: MyFunction("3:3", 10) 其中第 3 行包含值,第 10 列是最后包含在计算中的值。

如果在单元格 E4 中输入函数,我想用 E3:J3 范围内的数字进行计算。

是否可以从调用当前函数的位置获取有关单元格的信息?如果从单元格 E4 调用该函数,我想获取函数中 E 列的列号。

要求用户在函数调用中输入当前列号似乎是在浪费时间并且是不必要的错误来源:MyFunction("3:3", Column(), 10)。这些函数也在 SpreadsheetGear 和旧 XLL 文件中作为自定义函数实现,所以我真的不希望更改参数的数量。

0 投票
2 回答
1273 浏览

performance - 为多键查找构建快速 Excel VBA UDF

我在一个工作簿中有几个相当大的数据表,需要创建一个 Excel 用户定义函数来查找这些表中的数据。我需要能够提供可变数量的键列和键值来搜索,并且该函数需要找到第一个匹配的行,然后使用此偏移量在相应的数据列中查找值。

有点像VLOOKUP. 我知道您可以创建一个密钥,由附加在第 1 列中的各个密钥组成,但我想避免这样做。

我已经创建了这个函数的几个版本,到目前为止最好的一个可以正常工作,只是速度很!我的一张表是近 9,000 行乘 11 列,我使用的是 6 字段键。我有大约 18,000 次出现此公式,重新计算工作表大约需要 3 分钟(我计算出涉及 9.7 亿次计算,所以它当然会很慢)。

它使用Evaluate()了我见过的尽可能多的解决方案。这是代码:

这会生成如下所示的 cmd 值:

INDEX($K$3:$L$8993,MATCH(1,($B$3:$B$8993="a1-5")*($C$3:$C$8993="Tarp")*($E$3:$E$8993="Sydney")*($F$3:$F$8993="Highest Reach")*($G$3:$G$8993="1+")*($J$3:$J$8993="T0"),1),1)

我需要一些帮助才能尽快完成这项工作。3分钟太慢了。

如前所述,我想避免VLOOKUP()基于解决方案,因为我不想预先计算组合键。

我还想避免SUMPRODUCT只使用数字并且不返回第一个值但如果找到多个匹配项则对所有值求和的解决方案。

我也不能依赖第三方加载项,即使我知道存在一些好的加载项。

所以,我目前的想法是使用WorksheetFunction.Index()/Match()本机,因此删除,Evaluate()因为我知道这会增加大量开销。

但是,我尝试删除Evaluate(). 有人可以在这里帮助我吗?

似乎WorksheetFunction.Index()/Match()在 VBA 中只支持单个范围和单个键,除非有人可以解释如何实现工作表中的函数具有的可爱(range1=key1)*(range2=key2)...符号,但不知何故不是。MATCHWorksheetFunction.Match()

0 投票
1 回答
201 浏览

excel - 函数向导中的参数类型验证

例如,在 Excel 中,DATE 函数针对每个字段显示“=number”。

如果我在这些字段中输入一个字符串来代替数字,我会得到 #VALUE!错误。

Excel-DNA 可以实现类似的功能吗?

0 投票
1 回答
839 浏览

vba - 返回值将覆盖自身的 Excel VBA UDF

我可以在 Excel VBA 中编写一个 UDF,其中函数的返回值将覆盖从中调用它的单元格值吗?

该函数通过 sql 请求获取信息。在这种情况下,它只是主数据,例如项目描述。如果用户将在许多单元格的工作表中使用此函数,则每次更改某些内容时,excel 都会重新计算单元格值。这性能很差,通常只需要获取一次信息,在这种情况下不需要更新。

我想使用 application.caller.address 方法来获取调用函数的地址,但它似乎无法在函数中设置该地址的单元格值。所以函数的返回值应该覆盖运行函数的原始公式。

这可能吗

感谢您的帮助

0 投票
1 回答
158 浏览

excel - Excel UDF to count errors

I was trying to write an UDF in Excel VBA which would count errors (#NA!, #REF!...). I tried to translate Excel formulas into VBA language bud did not succed. Does somebody know a solution?

Thanks

0 投票
1 回答
12014 浏览

vba - UDF 删除单元格中的特殊字符、标点符号和空格,为 Vlookups 创建唯一键

我在 VBA 中编写了以下用户定义函数,它允许我从任何给定的单元格中删除某些非文本字符。

代码如下:

这部分代码显然定义了要删除的字符:

我还想在这个标准中包含一个普通的空格字符“”。我想知道是否有某种转义字符可以用来执行此操作?

所以,我的目标是能够运行这个函数,让它从给定的 Excel 单元格中删除所有指定的字符,同时删除所有空格。

另外,我意识到我可以在 Excel 本身中使用 =SUBSTITUTE 函数来做到这一点,但我想知道在 VBA 中是否可行。

编辑:它是固定的!谢谢西莫科!

0 投票
2 回答
32735 浏览

vba - 将字符串转换为大写的函数

String.ToUpper()我一直在尝试使用VBA中的方法使我编写的用户定义函数以全部大写形式返回它的值。当我尝试在 excel 中使用我的 UDF 时,我收到一个编译器错误,它只突出显示了我的 UDF 的顶行:

这是完整的代码:

该代码可以很好地删除特殊字符,但我希望它也可以将输入的字符串转换为大写。

当我尝试添加时,我开始收到此错误:

如果此代码被注释掉,我的 UDF 可以工作,但不会返回所有 Upper 中输入的字符串。

0 投票
2 回答
12446 浏览

excel - Excel UDF 未出现在下拉菜单中

我在 Excel 中编写了一个用户定义的函数。它工作得很好,没有任何问题。我什至在对象属性菜单下为它写了一个描述。

问题是,我的 UDF 从未出现在我开始键入函数时出现的 Excel 下拉菜单中。我希望用户在进入单元格并开始输入函数时能够看到我的名为 removeNumbers 的 UDF。

我还希望他们能够看到我写的描述,就像标准的 Excel 函数一样。

最后,有没有一种方法可以为我的函数作为输入的每个参数提供描述?

这是实际的代码,尽管我认为没有必要回答我的问题。

0 投票
2 回答
3921 浏览

vba - 在 for 循环中嵌套 if 语句

我正在修改我编写的用户定义函数。它从单元格中删除特殊字符(我已经发布了几次相同的功能,因为我不断扩展它并更多地了解 VBA 的功能)。

我现在要做的是添加一个 MsgBox,它会弹出并准确地告诉用户哪些特殊字符已被删除。我认为我可以通过使用嵌套在现有 for 循环中的 If 语句来做到这一点,如下所示:

目前这让我陷入了一个无限循环,我必须强制关闭 Excel。我试图用上面的代码做的是检查一个单独的字符是否位于 Mid 函数当前正在查看的任何索引处,然后将该字符(如果被替换)保存到 String sReplaced。很明显,我在我的头上。

谢谢你的帮助。