私のコードは =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