プロが教える店舗&オフィスのセキュリティ対策術

各項目毎の集計計算をしたいのですが

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に計算式をセットしておきたい

どうかご教授をお願いいたします。

A 回答 (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を得意とする人は、こういう場合、ワークシートに数式は入れないです。全部、マクロで数字を入れていきます。
    • good
    • 0

>または 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)"
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/29 17:12

nに数値が入っているとして、



Cells(1,2).FormulaR1C1= "=SUMIF(C3,""Z" & trim(str(n)) & """,C2)"

ということでしょうか。
trimはなくても行けるような気はしますが保険で。
    • good
    • 0
この回答へのお礼

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

お礼日時:2010/11/29 17:08

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!