- ベストアンサー
セルに数式を入れずに計算結果のみを入力
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下のコードでいかがですか。 なお、都度利用しているエクセルのバージョンを記載しておいてください。 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
その他の回答 (1)
- kkkkkm
- ベストアンサー率66% (1719/2589)
> 元データーがシート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
お礼
ありがとうございます。非常に助かりました。
補足
ありがとうございます。Excel2013でVBAコード入力で確認したらバッチリでした。応用し使用しようと思いましたがエラーが出てしまいできません。 以下の条件となりますもしよければご教授願います。 元データーがシート1、指定文字と計算結果入力がシート2になりシート1のE列に数値が入り、シート2I列にH列同様計算結果を入力したいのですが。宜しくお願いします。