Я написал довольно длинную формулу, поэтому мне пришлось разрезать ее по частям и использовать. Заменить, чтобы сделать ее снова одной формулой.
Целью формулы было подсчитать уникальные значения в пределах диапазона,с несколькими критериями.Часть формулы SUM состоит в суммировании различных критериев.
Боюсь, я немного новичок и пока не имею большого опыта работы с Array.
Однако, это не работает, так как мой ответ "#NAME?"в Excel, и формула: "=IF(SUM((WWW))=0,""-"",SUM((WWW)))"
, поэтому он не распознает замененные детали.
Что я делаю не так?
Формула работает, если убрать в ней символ «=» и вручную установить его в Excel.Таким образом, формула верна.
Dim theFormulaPart1 As String
Dim theFormulaPart2 As String
Dim theFormulaPart3 As String
Dim theFormulaPart4 As String
Dim theFormulaPart5 As String
theFormulaPart1 = "=IF(SUM((WWW))=0,""-"",SUM((WWW)))"
theFormulaPart2 = "IF(FREQUENCY(IF((Scientific_Name=RC[-8])*(Total>0)*(Membership=""EAZA""),MATCH(Mnemonic,Mnemonic,0)),MATCH(Mnemonic,Mnemonic,0))>0,1))+XXX"
theFormulaPart3 = "(IF(FREQUENCY(IF((Scientific_Name=RC[-8])*(Total>0)*(Membership=""Temporary""),MATCH(Mnemonic,Mnemonic,0)),MATCH(Mnemonic,Mnemonic,0))>0,1))+YYY"
theFormulaPart4 = "(IF(FREQUENCY(IF((Scientific_Name=RC[-8])*(Total>0)*(Membership=""Associate""),MATCH(Mnemonic,Mnemonic,0)),MATCH(Mnemonic,Mnemonic,0))>0,1))+ZZZ"
theFormulaPart5 = "(IF(FREQUENCY(IF((Scientific_Name=RC[-8])*(Total>0)*(Membership=""N-EEP""),MATCH(Mnemonic,Mnemonic,0)),MATCH(Mnemonic,Mnemonic,0))>0,1)"
With ActiveSheet.Range("I42")
.FormulaArray = theFormulaPart1
.Replace "WWW", theFormulaPart2, xlPart
.Replace "XXX", theFormulaPart3, xlPart
.Replace "YYY", theFormulaPart4, xlPart
.Replace "ZZZ", theFormulaPart5, xlPart
End With
Настройка, кажется, работает нормально, так как это дает "20":
Dim theFormulaPart1 As String
Dim theFormulaPart2 As String
Dim theFormulaPart3 As String
Dim theFormulaPart4 As String
Dim theFormulaPart5 As String
theFormulaPart1 = "=IF(SUM(WWW)=0,""-"",SUM((WWW)))"
theFormulaPart2 = "3+XXX"
theFormulaPart3 = "4+YYY"
theFormulaPart4 = "6+ZZZ"
theFormulaPart5 = "7"
With ActiveSheet.Range("I36")
.FormulaArray = theFormulaPart1
.Replace "WWW", theFormulaPart2, xlPart
.Replace "XXX", theFormulaPart3, xlPart
.Replace "YYY", theFormulaPart4, xlPart
.Replace "ZZZ", theFormulaPart5, xlPart
End With