【发布时间】:2019-04-11 17:25:18
【问题描述】:
编辑:Chronocidal 的解决方案非常有帮助。我实现了它,它就像一个魅力。感谢您的所有帮助。 Ron Reisenfeld 和 EvR 的评论也帮了我很大的忙,让我朝着正确的方向前进
有人可以帮我解决我想用 formula.local 函数插入一些单元格的数组公式吗?公式中可能有一些不对劲的地方,但我就是找不到原因……如果有人可以测试它,那将是一个很大的帮助,因为我只有德文版的 excel,可能我已经监督了任何语言特定的原因。我附上一个文件来测试公式(xlsx)
如果我 debug.print 公式如下所示:
=(PRODUCT(IF(Daten!B1:B12353=SMALL(IF((Daten!B1:B12353>=$C$25),Daten!B1:B12353,999999),1),Daten!A1:A12353-SUM(0,0),1),IF((Daten!B1:B12353>SMALL(IF((Daten!B1:B12353>=$C$25),Daten!B1:B12353),1))*((Daten!B1:B12353<=$D$33)),Daten!A1:A12353,1))^(1/(DAYS360($C$25,$D$33)/360))-1)*100
我在此示例工作簿中使用了公式:https://drive.google.com/open?id=1xCth5vo6G82lNDsclbj3FpUfYzvXsuEJ
在 VBA 中,公式包含大量变量,它们是:
[edit] b = 我想在公式中查看的范围内的最后一行 [/edit]
日期!B1:B" & b = 日期行
sh_Ov.Cells(int_Ende + 1, Int_links).Address = 最新日期
sh_Ov.Cells(int_Start, 3).Address = 最早日期(但不一定在日期行中——这就是我使用“小”公式的原因)
Daten!A1:A" & b = 我要计算乘积的数字
ThisWorkbook.Sheets(1).Cells(x,y).FormulaArray = "=(PRODUCT(IF(Daten!B1:B" & b & "=SMALL(IF((Daten!B1:B" & b & ">=" & sh_Ov.Cells(int_Start, 3).Address & "),Daten!B1:B" & b & ",999999),1),Daten!A1:A" & b & "-SUM(0,0),1),IF((Daten!B1:B" & b & ">SMALL(IF((Daten!B1:B" & b & ">=" & sh_Ov.Cells(int_Start, 3).Address & "),Daten!B1:B" & b & "),1))*((Daten!B1:B" & b & "<=" & sh_Ov.Cells(int_Ende + 1, Int_links).Address & ")),Daten!A1:A" & b & ",1))^(1/(DAYS360(" & sh_Ov.Cells(int_Start, 3).Address & "," & sh_Ov.Cells(int_Ende + 1, Int_links).Address & ")/360))-1)*100"
如果有人能看看这个就太好了。到目前为止,我无法找到原因
最好的问候 延斯
【问题讨论】:
-
该死!它应该在标题中说 formula.array.... -.- 对不起
-
.FormulaLocal 与 .FormulaArray 不同。您的意思是整个问题和标题中的 .FormulaArray 吗?您在公式中使用的变量的值是什么,例如乙?
-
嗨,是的。在整个帖子中应该是 Formulaarray。对不起,我搞砸了。 b 代表我想在公式中查看的范围内的最后一行
-
您是否已将其用作单元格中的数组公式?您也可以使用edit 更新您的问题,所以这里没有问题!
标签: excel vba excel-formula formula