dポイントプレゼントキャンペーン実施中!

いつも回答して頂きありがとうございます。
マクロの記述中にも関数の入力が必要な場合があると最近知った者です。
で、質問ですが、

集計用シートのC3・D3・E3・・・・に商品名が入力されている
集計用シートのB4・B5・B6・・・・に日付が連続して入力されている

履歴シートから1日単位で商品の動きを調査したいと思いますが
マクロの記述中にCOUNTIFSを使う方法はあるのでしょうか?

商品名毎の繰り返し処理を記述しましたが、参照セルの移動方法が分かりません。御指導の程宜しくお願い致します。(マクロ記述の中にある??が分からない箇所です。)

Sub 集計4()
Dim retu As Long
retu = 3
For retu = 3 To Cells(3, Columns.Count).End(xlToLeft).Column
Worksheets("集計用").Cells(4, retu).Formula = "=COUNTIFS(データ元!B8:B60000,集計用!??,データ元!D8:D60000,集計用!??)"
Next retu
End Sub

A 回答 (4件)

ループは不要ではないでしょうか。



Sub 集計4()
Dim r As Long, c As Long
With Sheets("集計")
c = .Cells(3, Columns.Count).End(xlToLeft).Column
r = .Cells(Rows.Count, 2).End(xlUp).Row
.Range(.Cells(4, 3), .Cells(r, c)).Formula = _
"=COUNTIFS(元データ!r8c3:r60000c3,rc2 ,元データ!r8c4:r60000c4,r3c)"
End With
End Sub
    • good
    • 0
この回答へのお礼

無事思い通りのマクロ動作が一瞬で出来ました。驚きです。
で、質問ですが、条件設定でrc2となっていますが、行方向にセル式を参照する場合は、rの後ろを未入力にする事で実行できると考えてよろしいのでしょうか?

お礼日時:2012/12/10 15:53

No3です。



>行方向にセル式を参照する場合は、rの後ろを未入力にする事で実行できると考えてよろしいのでしょうか?
 ⇒行方向が縦方向ならばそういう事です。
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
今後、活用していきます。

お礼日時:2012/12/11 03:25

回答No1です。


マクロの記述で一部を下記のように変更してください。

Set WS1 = Worksheets("集計用")
Set WS2 = Worksheets("データ元")
    • good
    • 0
この回答へのお礼

了解しました。

お礼日時:2012/12/10 15:59

Formulaで式は"で閉じられており文字列としての扱いになりますのでセルの変化を伴う動きに対応ができません。


列や行の変化を付けてマクロを完成するには例えば次のようにします。

Sub 集計4()
Dim retu As Long
Dim gyou As Long
Set WS1 = Worksheets("Sheet3")
Set WS2 = Worksheets("Sheet4")
For gyou = 4 To WS1.Cells(Rows.Count, 2).End(xlUp).Row
For retu = 3 To WS1.Cells(3, Columns.Count).End(xlToLeft).Column
WS1.Cells(gyou, retu) = WorksheetFunction.CountIfs(WS2.Range("B4:B60000"), WS1.Cells(gyou, 2), WS2.Range("D4:D60000"), WS1.Cells(3, retu))
Next retu
Next gyou
End Sub
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Formulaではなく、WorksheetFunctionを使えば、条件設定等にCellsを使用する事が可能なんですね。いい勉強になりました。

お礼日時:2012/12/10 15:59

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