• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:マクロ 関数COUNTIFS 使用時の?)

マクロ関数COUNTIFS使用時の?

このQ&Aのポイント
  • マクロの中でCOUNTIFS関数を使用して商品の動きを1日単位で調査する方法について質問があります。
  • 集計用シートのC3・D3・E3・・・・には商品名が入力されており、履歴シートのB4・B5・B6・・・・には日付が連続して入力されています。
  • マクロの記述中にCOUNTIFS関数を使うことで、参照セルの移動方法が分からず困っています。マクロの記述中にある「??」の部分が分からないです。

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

  • ベストアンサー
  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

ループは不要ではないでしょうか。 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

kero1192kero
質問者

お礼

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

その他の回答 (3)

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.4

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

kero1192kero
質問者

お礼

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

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

回答No1です。 マクロの記述で一部を下記のように変更してください。 Set WS1 = Worksheets("集計用") Set WS2 = Worksheets("データ元")

kero1192kero
質問者

お礼

了解しました。

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

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

kero1192kero
質問者

お礼

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

関連するQ&A

専門家に質問してみよう