ワークシートベースのSUMPRODUCT呼び出し内でVBA関数を使用する方法を知っている人はいますか?
これは正常に機能し、列Lに「Y」が含まれ列Aに列Kとは異なる値が含まれる列Nの値を合計します。
=SUMPRODUCT(--(Input!L1:L100="Y"), --(Input!A1:A100<>Input!K1:K100), Input!N1:N100)
しかし、2番目の基準でA <> Kだけでなく、次のようなロジックを適用できるようにしたいと考えています...
=SUMPRODUCT(--(Input!L1:L100="Y"), --(MatchNames(Input!A1:A100,Input!K1:K100)), Input!N1:N100)
VBAにMatchNamesという関数がありますが、機能するために何を返す必要があるかを理解できません。ブール値、整数(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