• 締切済み

FormulaR1C1でSUMIF変数指定

各項目毎の集計計算をしたいのですが 例 R1C1=項目区分1 R1C2.FormulaR1C1="=SUMIF(C3,""Zn"",C2)" のような計算式をセットしたい R2C1="" R2C2=2 R2C3=Z1 R3C1="" R3C2=3 R3C3=Z1 R4C1=項目区分2 R4C2.FormulaR1C1="=SUMIF(C3,""Zn"",C2)" のような計算式をセットしたい R5C1="" R5C2=4 R5C3=Z2 R6C1="" R6C2=5 R6C3=Z2 Cells(1,2).FormulaR1C1= "=SUMIF(C3,""Zn"",C2)" 但し Cells(1,2)のROW 部分は項目区分を入力したROWアドレスとなります。 上記部分の n部分を変数指定はできるのでしょうか? または Zn を変数指定はできるのでしょうか?この場合のZnは数値となります。 理由 区分の範囲が不特定の為(追加削除がある) 項目区分名のカラム2に計算式をセットしておきたい どうかご教授をお願いいたします。

みんなの回答

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

Sub Test2() Dim n As Long Dim rng As Range Set rng = Range("C1", Cells(Rows.Count, 3).End(xlUp).Offset(, -2)) Application.ScreenUpdating = False For Each c In rng  If c.Value Like "項目区分#" Then   n = Replace(c.Value, "項目区分", "") '...*   n = StrConv(n, vbNarrow)       '...*   c.Offset(, 1).Formula = "=SUMIF(C:C,""Z" & n & """, B:B)"  End If Next Application.ScreenUpdating = True End Sub Formulaプロパティなら、R1C1方式でも、A1方式でも、数式は同じです。 ""Z" & i は、CStr とか、Trimとか入れる必要があるのかは、ここでは無視します。エラーが発生したら考えればよいです。普通、VBAを得意とする人は、こういう場合、ワークシートに数式は入れないです。全部、マクロで数字を入れていきます。

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

>または Zn を変数指定はできるのでしょうか?この場合のZnは数値となります。 Zn は文字列"Z"と数値 n をくっつけた文字列ではなくて Z1,Z2,Z3..これが「変数」、という意味でしょうか。 つまり Sub test1()   Dim Z1 As Long   Dim Z2 As Long   Dim Z3 As Long      Z1 = 2   Z2 = 5   Z3 = 8   MsgBox "=SUMIF(C3," & Z1 & ",C2)" End Sub こういう事がしたく、Z1の1を変数指定できるかという意味? もしそうなら配列変数を使います。 Sub test2()   Dim Z(1 To 3) As Long   Dim n As Long      Z(1) = 2   Z(2) = 5   Z(3) = 8   n = 1   MsgBox "=SUMIF(C3," & Z(n) & ",C2)" End Sub または、 >但し Cells(1,2)のROW 部分は項目区分を入力したROWアドレスとなります。 変数Z()の要素が、数式を入力するセルからの相対位置で求められるなら 変数を使うまでもなく、相対参照を使った数式にすれば良いです。 Cells(x, 2).FormulaR1C1 = "=SUMIF(C3,R[1]C[1],C2)"

maru0130
質問者

お礼

大変有り難うございます。 & でくくるは他のHPで判りましたが "の数と 間の空白でにひっかかっていました。 "" ""でなくていいんですね。

  • D-Matsu
  • ベストアンサー率45% (1080/2394)
回答No.1

nに数値が入っているとして、 Cells(1,2).FormulaR1C1= "=SUMIF(C3,""Z" & trim(str(n)) & """,C2)" ということでしょうか。 trimはなくても行けるような気はしますが保険で。

maru0130
質問者

お礼

大変有り難うございます。 & でくくるは他のHPで判りましたが "の数と 間の空白でにひっかかっていました。 =sumif(c3,""z"&n&"",c2)" とか =sumif((c3,""z"&n&""",c2)" でエラーでした。

関連するQ&A