Кто-нибудь знает, как использовать функцию VBA в таблице основанный на SUMPRODUCT?Excel SUMPRODUCT с условиями на основе VBA
Это прекрасно работает, суммируя значения в столбце N, где столбец содержит L «Y» и столбец А содержит другое значение Col K ...
=SUMPRODUCT(--(Input!L1:L100="Y"), --(Input!A1:A100<>Input!K1:K100), Input!N1:N100)
Но я хочу, чтобы иметь возможность применять более логика, чем просто <> K в моих вторых критериев, что-то вроде этого ...
=SUMPRODUCT(--(Input!L1:L100="Y"), --(MatchNames(Input!A1:A100,Input!K1:K100)), Input!N1:N100)
у меня есть функция, называемая MatchNames в моей VBA, но я не могу определить, что он должен вернуться, чтобы Работа. Я пробовал возвращать массив логических, integer (установить в 0 или 1), я попытался переставить результаты перед их возвратом, но ничего не работает. Я отлаживал функцию MatchNames, и она возвращает что-то «полезное» (т. Е. Массив логических элементов), поэтому не потому, что функция разбомбивается частично, но я получаю #VALUE! когда я пытаюсь использовать его в SUMPRODUCT.
Это моя функция VBA ...
Public Function MatchNames(ByVal rng1 As Range, rng2 As Range) As Boolean()
Dim blnOut() As Boolean
Dim k As Long
ReDim blnOut(rng1.Rows.Count - 1)
For k = 1 To rng1.Rows.Count
If rng1.Cells(k, 1).Value <> "" Then
If rng1.Cells(k, 1).Value <> rng2.Cells(k, 1).Value Then
blnOut(k - 1) = True
End If
End If
Next
MatchNames = blnOut
End Function
Ahhhh да, спасибо. Это потрясающе. Я пробовал переставить код перед возвратом, а это значит, что я не мог просто вернуть свой объект в виде массива bool, но выполнил транспонирование в формуле. Благодаря!! – Mottster
Вы можете сделать свой UDF возвратом 2-мерного массива (1 столбец и n строк) вместо использования Transpose. Если вы вернете 1 и 0, а не логические, вам также не понадобится -. –