РЕДАКТИРОВАТЬ: решение от Chronocidal было очень полезно. Я реализовал это, и это работает как шарм. Спасибо за вашу помощь. Замечания Рона Райзенфельда и EvR тоже очень помогли и направили меня в правильном направлении
Может кто-нибудь помочь мне с формулой массива, которую я пытаюсь вставить в некоторые ячейки с помощью функции form.local? Возможно, что-то не так в формуле, но я просто не могу найти причину ... Было бы очень полезно, если бы кто-то смог это проверить, так как у меня есть только немецкая версия Excel и, возможно, я наблюдал за ней. любые языковые причины. Я приложил файл для проверки формулы (xlsx)
Если я отлаживаю печать, формула будет выглядеть так:
=(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 формула состоит из множества переменных:
[править] b = последняя строка в диапазоне, на которую я хочу посмотреть в формуле [/ edit]
Daten! 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"
Было бы замечательно, если бы кто-нибудь мог взглянуть на это. Пока не могу найти причину
С наилучшими пожеланиями
Jens