Проблемы с вводом FormulaArray в VBA - PullRequest
2 голосов
/ 25 февраля 2020

Я пытаюсь ввести следующую формулу, используя VBA

"=SUM(IF(FREQUENCY(IF
('Array Summary'!$A$3:$A$" & LastRow & "=$A$1,IF
('Array Summary'!$B$3:$B$" & LastRow & "=$H$13,IF
('Array Summary'!$E$3:$E$" & LastRow & "<>"""",IF
('Array Summary'!$K$3:$K$" & LastRow & "=$H$12,IF
('Array Summary'!$L$3:$L$" & LastRow & "=I12,IF
('Array Summary'!$O$3:$O$" & LastRow & "<>""Commvault"",MATCH
('Array Summary'!$E$3:$E$" & LastRow & ",'Array Summary'!$E$3:$E$" & LastRow & ",0))))))),ROW
('Array Summary'!$E$3:$E$" & LastRow & ")-ROW('Array Summary'!E3)+1),1))"

Я попытался радикально сократить формулу до чего-то вроде ниже, чтобы затем использовать replace

"=SUM(IF(FREQUENCY(IF(A1:A2=$A$1,
IF(B1:B2=$H$13,
IF(E1:E2<>"""",
IF(K1:K2=$H$12,
IF(L1:L2=I12,
IF(O1:O2<>""Commvault"",
MATCH(E1:E2,E1:E2,0))))))),
ROW(E1:E2)-ROW(E6)+1),1))"

Но Я не могу добавить эту формулу через VBA, если я удаляю одно из выражений IF, VBA добавляет его в порядке, но я не могу получить замену на работу

Любая помощь, которую кто-либо может мне дать, очень полезна оценил

1 Ответ

1 голос
/ 25 февраля 2020

Попробуйте следующее ...

Dim formulaPart1 As String
Dim formulaPart2 As String
Dim formulaPart3 As String
Dim formulaPart4 As String
Dim formulaPart5 As String
Dim formulaPart6 As String
Dim formulaPart7 As String
Dim formulaPart8 As String
Dim formulaPart9 As String

formulaPart1 = "'Array Summary'!$A$3:$A$" & LastRow & "=$A$1"
formulaPart2 = "'Array Summary'!$B$3:$B$" & LastRow & "=$H$13"
formulaPart3 = "'Array Summary'!$E$3:$E$" & LastRow & "<>"""""
formulaPart4 = "'Array Summary'!$K$3:$K$" & LastRow & "=$H$12"
formulaPart5 = "'Array Summary'!$L$3:$L$" & LastRow & "=I12"
formulaPart6 = "'Array Summary'!$O$3:$O$" & LastRow & "<>""Commvault"""
formulaPart7 = "'Array Summary'!$E$3:$E$" & LastRow
formulaPart8 = "'Array Summary'!$E$3:$E$" & LastRow
formulaPart9 = "ROW('Array Summary'!$E$3:$E$" & LastRow & ")-ROW('Array Summary'!E3)+1"

With Range("B2") 'change the cell reference accordingly
    .FormulaArray = "=SUM(IF(FREQUENCY(IF(A_A_A,IF(B_B_B,IF(C_C_C,IF(D_D_D,IF(E_E_E,IF(F_F_F,MATCH(G_G_G,H_H_H,0))))))),I_I_I),1))"
    .Replace "A_A_A", formulaPart1
    .Replace "B_B_B", formulaPart2
    .Replace "C_C_C", formulaPart3
    .Replace "D_D_D", formulaPart4
    .Replace "E_E_E", formulaPart5
    .Replace "F_F_F", formulaPart6
    .Replace "G_G_G", formulaPart7
    .Replace "H_H_H", formulaPart8
    .Replace "I_I_I", formulaPart9
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...