• ベストアンサー

VBAで計算結果のみ表示させたい

VBA作成中です。 SUMIF関数なのですが、 ActiveCell.FormulaR1C1 = "=SUMIF(R2C1:R14C1,RC[-1],R2C4:R14C4)"  このままだと計算式が入るので、これを計算結果のみ表示させたいのですが、値のみ貼り付け以外で方法はありますか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 数式をワークシートに入れて値を求めるのは、VBAのよさが出てきません。 なお、必ずしも、FormulaR1C1 と書く必要はありません。FormulaLocal などでよいです。Local の意味は、日本独特の関数を入れる場合に必要なことがあります。 Test2 は、少し、RC[-1] の表現が、ActiveCell.Offset(, -1).Value というのは、本来のVBAの書き方ではありませんが、以下のような方法があります。 本来は、ActiveCell.Offset(, -1).Value の場所は決めたほうがよいです。 Sub Test2() Dim a As String a = ActiveCell.Offset(, -1).Address ActiveCell.Value = Application.Evaluate("SUMIF($A$2:$A$14," & a & ",$D$2:$D$14)") End Sub '必ずしも同じではないのですが、以下のような書き方がマクロらしいです。 ただし、不等号や等号は、必要に応じて書き換える必要があります。 Sub Test3()   Dim i As Integer   Dim ret As Double   With Range("A2:A14")     For i = 1 To .Rows.Count       If ActiveCell.Offset(, -1).Value = .Cells(i, 1).Value Then         ret = ret + .Cells(i, 4).Value 'A列に対して、4列目という意味       End If     Next i   End With   ActiveCell.Value = ret End Sub

picopika
質問者

お礼

詳しく説明して頂きありがとうございます。 勉強になりました。

その他の回答 (3)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

こんばんは。 WorksheetFunction.SumIf を使うなら、左辺は、ActiveCell.Value ですね。私は、Evaluate にこだわり、忘れていました。(^^; Evaluate は、特殊な使い方があります。エラーをはいても、Variant で受けると、それは、エラー値として出力されます。

picopika
質問者

お礼

お礼が遅れてすみません。 やってみます。 ありがとうございました。

回答No.3

こんにちは Application.WorksheetFunction.SumIfという関数がVBAにあります。 以下の例は、アクティブセルにアクティブセルの1列前(Offset(0, -1).Value) の値を検索値として、検索範囲 A1:A14、集計範囲 B1:B14とする例です。 Sub SumIf_Sample() ActiveCell.Formula = _ Application.WorksheetFunction.SumIf(Range("A1:A14"), ActiveCell.Offset(0, -1).Value, Range("B1:B14")) End Sub ご参考まで

picopika
質問者

お礼

初心者な者でそのまま貼り付けさせていただきましたが、 エラー表示になってしまいます。 Application.WorksheetFunction.SumIf関数ですね 勉強してみます。 ご回答ありがとうございました。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

With ActiveCell .FormulaR1C1 = "=SUMIF(R2C1:R14C1,RC[-1],R2C4:R14C4)"  .Value = .Value End With とか?

picopika
質問者

お礼

出来ました。 ご回答ありがとうございした。

関連するQ&A