• ベストアンサー

セルに数式を入れずに計算結果のみを入力

B2:D11まで入力された文字と数値がありB,C列のマッチした文字の計算値をH列にいれたいのですが現在H列はVBAによりセルに数式が入っておりますが計算結果のみをH列に入力したいのですが尚、図では11行までですが行数が多い時を踏まえてVBAコードをご教授願います。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

以下のコードでいかがですか。 なお、都度利用しているエクセルのバージョンを記載しておいてください。 Sub Example() Dim MyLastRow As Long, i As Long Dim EVStr As String Sheets("SheetX").Activate MyLastRow = Cells(Rows.Count, "B").End(xlUp).Row '2007以降ならこちら ' For i = 2 To Cells(Rows.Count, "F").End(xlUp).Row ' Cells(i, "H") = WorksheetFunction.SumIfs( _ ' Range(Cells(2, "D"), Cells(MyLastRow, "D")), _ ' Range(Cells(2, "B"), Cells(MyLastRow, "B")), Cells(i, "F"), _ ' Range(Cells(2, "C"), Cells(MyLastRow, "C")), Cells(i, "G")) ' Next i '2007ここまで '2007よりまえならこちら For i = 2 To Cells(Rows.Count, "F").End(xlUp).Row EVStr = "(B2:B" & MyLastRow & "= F" & i & ") *(C2:C" & MyLastRow & "= G" & i & ") * D2:D" & MyLastRow Cells(i, "H") = WorksheetFunction.SumProduct(Evaluate(EVStr)) Next i End Sub

kuma0220
質問者

お礼

ありがとうございます。非常に助かりました。

kuma0220
質問者

補足

ありがとうございます。Excel2013でVBAコード入力で確認したらバッチリでした。応用し使用しようと思いましたがエラーが出てしまいできません。 以下の条件となりますもしよければご教授願います。 元データーがシート1、指定文字と計算結果入力がシート2になりシート1のE列に数値が入り、シート2I列にH列同様計算結果を入力したいのですが。宜しくお願いします。

その他の回答 (1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.2

> 元データーがシート1、指定文字と計算結果入力がシート2になりシート1のE列に数値が入り、シート2I列にH列同様計算結果を入力したいのですが。宜しくお願いします。 画像のD列がシート1のE列 画像のH列がシート2のI列 ということと捉えました。以下のコードでいけると思います。 Sub Example2() Dim MyLastRow As Long, i As Long Dim ws1 As Worksheet, ws2 As Worksheet Set ws1 = Sheets("シート1") Set ws2 = Sheets("シート2") MyLastRow = ws1.Cells(Rows.Count, "C").End(xlUp).Row With ws1 For i = 2 To ws2.Cells(Rows.Count, "G").End(xlUp).Row ws2.Cells(i, "I") = WorksheetFunction.SumIfs( _ .Range(.Cells(2, "E"), .Cells(MyLastRow, "E")), _ .Range(.Cells(2, "C"), .Cells(MyLastRow, "C")), ws2.Cells(i, "G"), _ .Range(.Cells(2, "D"), .Cells(MyLastRow, "D")), ws2.Cells(i, "H")) Next i End With Set ws1 = Nothing Set ws2 = Nothing End Sub

関連するQ&A