/ /複数の基準への参照に基づいて複数の列を合計する - VBAが変換されない - Excel、vba、filter

複数の条件の参照に基づいて複数の列を合計 - VBA変換なし - Excel、VBA、フィルタ

私のコードは =SUMPRODUCT(H50:AA69*(H5:AA5=B10)*ISNUMBER(MATCH(F50:F69,K18:K24,0)))

h50:aa69は私のデータテーブル、h5:aa5は私の年の行です(b10私はデータテーブルをフィルターするために使用する私の基準年、単一の列に選択を絞り込む)。 F50:F69は、私の基準範囲K18:K24が単一の列から行をさらに除外する識別子の列です。

私の式はExcelで動作します。私はそれをVBAに翻訳しようとしましたが、動かせませんでした。だれかがその理由を知っていますか?

Sheet72.Range("C22") = Application.WorksheetFunction.SumProduct((Sheet32. _
Range("h50:AA69")) * (Sheet32.Range("H5:AA5") = year) * _
Application.WorksheetFunction.IsNumber(Application.WorksheetFunction. _
Match(Sheet32.Range("f50:f69"), Sheet72.Range("K18:K24"), 0)))

回答:

回答№1は0

@Tim Williamsが意味していたのは(私が思う)あなたはその可能性を捕らえる必要があるということです Application.WorksheetFunction.Match 一致が見つからないため失敗します Sheet72.Range("K18:K24")そしてそれはエラーを再試行します。

追加を参照してください If 以下のコードの基準

If Not IsError(Application.Match(Sheet32.Range("F50:F69"), Sheet72.Range("K18:K24"), 0)) Then
Sheet72.Range("C22") = Application.WorksheetFunction.SumProduct((Sheet32.Range("h50:AA69")) * _
(Sheet32.Range("H5:AA5") = Year) * _
Application.WorksheetFunction.IsNumber(Application.WorksheetFunction. _
Match(Sheet32.Range("f50:f69"), Sheet72.Range("K18:K24"), 0)))
Else
MsgBox "Match failed"
End If