问题标签 [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.
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 速度较慢。
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)))))))))
excel - 消除除字母字符以外的所有字符的公式
我需要在 Excel 中清理一列名称以消除所有非字母字符,包括句点、逗号、空格、连字符和撇号。
示例:更改O'Malley-Smith, Tom, Jr.
为OMALLEYSMITHTOMJR
客户端要求这是一个 Excel 函数,否则我会使用类似于replaceAll("[^a-zA-Z]", "").toUpperCase()
. 在一大堆功能之外,我似乎找不到任何看起来像现成功能的东西来执行此操作SUBSTITUTE
- 每个单元似乎只有一个可用。
如果这是我需要的,我对开发自定义宏并不是非常熟练。
excel - 在“插入函数”提示中禁用 excel UDF 计算
当“插入函数”提示调用它时,有什么方法可以禁用 excel UDF 函数(我目前正在使用 excel DNA 库)?
我的 Excel UFD 函数进行 web 服务调用,并且“插入函数”提示上的这种行为使服务器超载(因为每个用户键入都会调用该函数)。
有人知道如何禁用此功能吗?
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.
vba - excel函数语法调用错误
我创建了这个函数:
当我在单元格中使用它时:
Excel 告诉我该函数包含错误并关注第二个参数:"C"
.
我要疯了,因为我不明白这个错误。
vba - VBA Excel:用户定义函数
修复:检查user3964075的评论
下面我的简单代码需要帮助:它基本上是 vlookup 的不同版本,您还可以在其中指定要查找的行。
asda(fval, rng, fcol, rcol)
fval是用户正在寻找的
rng是范围
fcol是 vlookup 默认的,设置为 1,现在用户可以选择使用哪一列作为搜索的基础
rcol是找到匹配项时返回的列
请参见下面的代码:
问题:它不起作用,我不知道为什么。由于我想使用其他人的代码,我想从我的开始并修复它。
为将来阅读此内容的任何人修复了代码:
结束功能
excel - Excel 中的 Eomonth
如何在用户定义的函数中使用此函数?我只是不能引用一个单元格。
vba - 函数被调用而不被调用并停止主宏
我有这个 Sub 循环执行 2 个基本计算,然后我有一个 UDF(见下文)。
我的问题:当我运行Sub BSM_Table
它时,它会在这一行调用函数: If Cells(i, 2) > 0 And Cells(i, 3) > 0 Then
和子停止。
我猜这是因为这些单元格:Cells(i, 2)
并且Cells(i, 3)
被函数使用,所以每当这些单元格更改时,函数都会自动重新计算。
有没有办法只在我想要的时候调用该函数?
我的功能:
string - 错误 #VALUE 在 VBA 中的 UDF 中带有长字符串,以便在 Excel 中输出
我使用下面的 UDF 连接引用以将结果包含在
SQL 查询中,例如ref in ('ref1', 'ref2', ...)
.
UDF可以正常工作,但是当我需要放置大量引用列表时,
我会#VALUE
进入 Excel。
我已经看了一下这个答案,但我无法让我的 UDF 工作......
我试图将函数的类型从更改String
为Variant
(明确地),
但它并没有改变任何事情......
我也尝试ConcatSQL2 = A(0)
了ConcatSQL2 = A
输出,
Dim A(0 To 0) As String
声明,......再次它不起作用......
我的想法已经用完了......
有关信息,结果字符串预计大约 220k 长...
为了帮助您生成大量文本,您可以在此处使用 Lorem Ipsum 生成器!