こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

複数シートに跨るcountifの結果を表示したい

再びEXCELマクロ関連の質問です。

とある商品の販売数をエクセルで管理しています。
商品は10個でワンセットで、セットごとに別のシートで管理しています。
セット1をsheet2で管理し、10個売り上げたらsheet3でまた次の10個を管理する…といった方法です。(この時点で無駄だと思いますが、この書式は崩せない前提で質問させてください)

G列に売り上げた”年月”が記載されていて、集計したい”年月”を入力して計算を開始すると、ブックにあるシートの数だけ同じ計算をして、トータルと売上数をカウント、その結果をsheet1の集計表に反映させる、ということをしたいです。
(2019年10月の売り上げが2つ、3つのシートにまたがっている可能性があるのでこのような方法をとっています)

シートのインデックス番号を変数iとして、仮にシート2~3までの売り上げ個数をカウントするとき、以下のマクロではシート2の結果しか表示できませんでした。
各iの変数で計算したcntを合計する計算式を記載しないといけないのはわかるのですが、その方法がわからず……みなさんのお知恵をお貸しください。



Sub 販売数()

Dim cnt As Variant
Dim FoundCell As Variant
Dim sMonth As Variant
Dim sh As Worksheet
Dim i As Variant

sMonth = Application.InputBox("集計したい年月を入力してください(例:2019年4月⇒201904)")

For i = 2 To 3
Set sh = Worksheets(i)
cnt = WorksheetFunction.CountIf(sh.Range("G4:G43"), sMonth)
Next

Set FoundCell = Cells.Find(What:=sMonth, LookIn:=xlValues)
If FoundCell Is Nothing Then
MsgBox "一致なし"
Exit Sub

Else
FoundCell.Offset(0, -4).Value = cnt
End If
End Sub

投稿日時 - 2020-05-26 15:42:18

QNo.9753387

困ってます

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

ながながと質問を書いているが、何を問題にしているかわからんが、同じブック内の複数シートを1つずつカウント対象にするなら
Sub test01()
x = 0
For Each sh In Worksheets
x = x + Application.WorksheetFunction.CountIf(sh.Range("A:A"), "横田")
Next
MsgBox x
End Sub
ーー
内容は、各シートのA列で、値が「横田」のセルを数えた。
シートの中に除外するシートが1が,2つあっても(結果を出すシートなど)
修正はIF文を使って除外しさえすれば仕舞。
探す範囲が、各シートでバラバラの場合は工夫を問うするが。

投稿日時 - 2020-05-26 18:32:16

ANo.1

cnt = WorksheetFunction.CountIf(sh.Range("G4:G43"), sMonth)

cnt = cnt+WorksheetFunction.CountIf(sh.Range("G4:G43"), sMonth)

じゃないでしょうか。

投稿日時 - 2020-05-26 16:33:56

あなたにオススメの質問