问题标签 [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 回答
821 浏览

c# - 为什么我的 XLL 比我的 UDF 慢?

我一直在尝试通过使用 XLL 来加速宏,但是,使用 UDF 似乎比使用 XLL 快得多。

一些带有代码分析的数据证明了这一点

子 Proc 的XLL时间:模块 1 迭代11.64831 秒

子 Proc 的UDF时间:模块 1 迭代4.25986 秒

它发生在我转换的两个 UDF 上,因子大约慢 2 倍或 3 倍。例如,为此的 XLL 函数是:

UDF 函数是

两者都针对 Range(A1:A701) 进行了测试,单元格之间有数据和空白,两者都按预期工作,只是 XLL 速度较慢。

0 投票
3 回答
462 浏览

excel - 功能太长了,但我需要它 - 可以在 VBA 中完成吗?

由于严重缺乏知识,我做了一个长得可笑的函数,以便进行计算。问题是它对于 Excel 来说太长了,我尝试在网上查看如何在 VBA 中创建一个引用我的函数的新函数。我对此非常迷茫,任何帮助都会很棒。这个函数太乱了,不能在这里发布(它有 30k 个字符长)。

好的,就这样 - 这是函数的一部分: =+IF(ISERROR(IF(LEFT(C12,FIND(" ",C12,1))=$C$2,SUMPRODUCT(P12:S12,Selection!$B) $4:Selection!$E$4),IF(LEFT(C12,FIND(" ",C12,1))=$C$3,SUMPRODUCT(P12:S12,Selection!$B$5:Selection!$E$5),IF (LEFT(C12,FIND(" ",C12,1))=$C$4,SUMPRODUCT(P12:S12,Selection!$B$6:Selection!$E$6),IF(LEFT(C12,FIND(" ", C12,1))=$C$5,SUMPRODUCT(P12:S12,Selection!$B$7:Selection!$E$7),IF(RIGHT(C12,LEN($C$6))=$C$6,SUMPRODUCT(P12 :S12,Selection!$B$8:Selection!$E$8),IF(RIGHT(C12,LEN($C$7))=$C$7,SUMPRODUCT(P12:S12,Selection!$B$9:Selection!$E $9),IF(RIGHT(C12,LEN($C$8))=$C$8,SUMPRODUCT(P12:S12,Selection!$B$10:Selection!$E$10),SUMPRODUCT(P12:S12,Selection!$B $11:Selection!$E$11)))))))),1,IF(LEFT(C12,FIND(" ",C12,1))=$C$2,SUMPRODUCT(P12:S12,Selection!$B $4:选择!$E$4),IF(LEFT(C12,FIND(" ",C12,1))=$C$3,SUMPRODUCT(P12:S12,Selection!$B$5:Selection!$E$5),IF(LEFT(C12,FIND(" ",C12,1)) =$C$4,SUMPRODUCT(P12:S12,Selection!$B$6:Selection!$E$6),IF(LEFT(C12,FIND(" ",C12,1))=$C$5,SUMPRODUCT(P12:S12 ,Selection!$B$7:Selection!$E$7),IF(RIGHT(C12,LEN($C$6))=$C$6,SUMPRODUCT(P12:S12,Selection!$B$8:Selection!$E$8) ,IF(RIGHT(C12,LEN($C$7))=$C$7,SUMPRODUCT(P12:S12,Selection!$B$9:Selection!$E$9),IF(RIGHT(C12,LEN($C$8) )=$C$8,SUMPRODUCT(P12:S12,Selection!$B$10:Selection!$E$10),SUMPRODUCT(P12:S12,Selection!$B$11:Selection!$E$11)))))))) )SUMPRODUCT(P12:S12,Selection!$B$8:Selection!$E$8),IF(RIGHT(C12,LEN($C$7))=$C$7,SUMPRODUCT(P12:S12,Selection!$B$9:Selection !$E$9),IF(RIGHT(C12,LEN($C$8))=$C$8,SUMPRODUCT(P12:S12,Selection!$B$10:Selection!$E$10),SUMPRODUCT(P12:S12,Selection !$B$11: 选择!$E$11)))))))))SUMPRODUCT(P12:S12,Selection!$B$8:Selection!$E$8),IF(RIGHT(C12,LEN($C$7))=$C$7,SUMPRODUCT(P12:S12,Selection!$B$9:Selection !$E$9),IF(RIGHT(C12,LEN($C$8))=$C$8,SUMPRODUCT(P12:S12,Selection!$B$10:Selection!$E$10),SUMPRODUCT(P12:S12,Selection !$B$11: 选择!$E$11)))))))))

0 投票
7 回答
22545 浏览

excel - 消除除字母字符以外的所有字符的公式

我需要在 Excel 中清理一列名称以消除所有非字母字符,包括句点、逗号、空格、连字符和撇号。

示例:更改O'Malley-Smith, Tom, Jr.OMALLEYSMITHTOMJR

客户端要求这是一个 Excel 函数,否则我会使用类似于replaceAll("[^a-zA-Z]", "").toUpperCase(). 在一大堆功能之外,我似乎找不到任何看起来像现成功能的东西来执行此操作SUBSTITUTE- 每个单元似乎只有一个可用。

如果这是我需要的,我对开发自定义宏并不是非常熟练。

0 投票
1 回答
138 浏览

excel - 在“插入函数”提示中禁用 excel UDF 计算

当“插入函数”提示调用它时,有什么方法可以禁用 excel UDF 函数(我目前正在使用 excel DNA 库)?

我的 Excel UFD 函数进行 web 服务调用,并且“插入函数”提示上的这种行为使服务器超载(因为每个用户键入都会调用该函数)。

有人知道如何禁用此功能吗?

0 投票
1 回答
1061 浏览

arrays - Limits reached in INDEX(MATCH()) when taking array as argument to look in

I use this formula:

=IFERROR(IF(MATCH(transf(E7);transf(Sheet2!$C$2:$C$66648);0)>0;"YES");"no")

transf is a UDF which simply converts/transforms the actual text value in cell to lowercase and does some other stuff (not the subject for this question).

Normally, if the value of transf(E7) is found in the formed array transf(Sheet2!$C$2:$C$66648), the formula returns YES, if no - no.

The UDF itself works well, it is tested many times. The problem is that this time it does not work. The returned answer is no, and it's not correct. Is this formula failure related to the big array of 66k+ items? What are the limitations of UDFs used as array formulas?

EDIT 1

This is the simplified version of my UDF:

If you notice any other imperfections in case of performance, please, let me know.

EDIT 2

I'm using Excel 2010. No compatibility mode, the file itself - .xlsm, the UDF is in .xlam add-in file.

0 投票
1 回答
54 浏览

vba - excel函数语法调用错误

我创建了这个函数:

当我在单元格中使用它时:

Excel 告诉我该函数包含错误并关注第二个参数:"C".

我要疯了,因为我不明白这个错误。

0 投票
1 回答
744 浏览

vba - VBA Excel:用户定义函数

修复:检查user3964075的评论

下面我的简单代码需要帮助:它基本上是 vlookup 的不同版本,您还可以在其中指定要查找的行。

asda(fval, rng, fcol, rcol)

fval是用户正在寻找的

rng是范围

fcol是 vlookup 默认的,设置为 1,现在用户可以选择使用哪一列作为搜索的基础

rcol是找到匹配项时返回的列

请参见下面的代码:

问题:它不起作用,我不知道为什么。由于我想使用其他人的代码,我想从我的开始并修复它。

为将来阅读此内容的任何人修复了代码:

结束功能

0 投票
2 回答
1398 浏览

excel - Excel 中的 Eomonth

如何在用户定义的函数中使用此函数?我只是不能引用一个单元格。

0 投票
1 回答
1126 浏览

vba - 函数被调用而不被调用并停止主宏

我有这个 Sub 循环执行 2 个基本计算,然后我有一个 UDF(见下文)。

我的问题:当我运行Sub BSM_Table它时,它会在这一行调用函数: If Cells(i, 2) > 0 And Cells(i, 3) > 0 Then和子停止。

我猜这是因为这些单元格:Cells(i, 2)并且Cells(i, 3)被函数使用,所以每当这些单元格更改时,函数都会自动重新计算。

有没有办法在我想要的时候调用该函数?

我的功能:

0 投票
1 回答
142 浏览

string - 错误 #VALUE 在 VBA 中的 UDF 中带有长字符串,以便在 Excel 中输出

我使用下面的 UDF 连接引用以将结果包含在
SQL 查询中,例如ref in ('ref1', 'ref2', ...).

UDF可以正常工作,但是当我需要放置大量引用列表时,
我会#VALUE进入 Excel

我已经看了一下这个答案,但我无法让我的 UDF 工作......

我试图将函数的类型从更改StringVariant(明确地),
但它并没有改变任何事情......

我也尝试ConcatSQL2 = A(0)ConcatSQL2 = A输出,
Dim A(0 To 0) As String声明,......再次它不起作用......
我的想法已经用完了......

有关信息,结果字符串预计大约 220k 长...
为了帮助您生成大量文本,您可以在此处使用 Lorem Ipsum 生成器!