いつもお世話になっております
おしえてくれませんでしょうか
シート1 と シート2 があります。
同じくB列に
A001
A002
A003
A004
A005
A006
A003
A008
とならんでいます。 もっとありますが。
例えば A003 が シート1 と シート2で
何個あるか調べたいのですが、
以下のコードを作りましたが、
Activesheetのみしか カウントされませんです。
わかる方おしえてくれませんでしょうか
Sub fage()
Dim aya
aya = Array("Sheet2", "Sheet3")
Dim r As Range
Dim wf As Object
Set wf = WorksheetFunction
For Each w In aya
With Worksheets(w)
Set r = .Range("B2", .Cells(Rows.Count, "B").End(xlUp))
cnt = wf.CountIf(r, "A003")
End With
Next
Cells(2, 8) = cnt
Set wf = Nothing
Set r = Nothing
End Sub
No.3ベストアンサー
- 回答日時:
こんばんは。
>例えば A003 が シート1 と シート2で
合計で良いのでしょうか? それなら、下記の様な感じでどうでしょうか?
Sub fage()
Dim aya
aya = Array("Sheet2", "Sheet3")
Dim r As Range
Dim wf As Object
Set wf = WorksheetFunction
cnt = 0
For Each w In aya
With Worksheets(w)
Set r = .Range("B2", .Cells(Rows.Count, "B").End(xlUp))
cnt = cnt + wf.CountIf(r, "A003")
End With
Next
Cells(2, 8).Value = cnt
Set wf = Nothing
Set r = Nothing
End Sub
No.2
- 回答日時:
No1です
>これだと 変だし おしえてくれませんでしょうか
なさりたいことが「合計を求めること」なのか「個々に個数を求めること」なのか不明なのままなので、とりあえず前者(=合計)での例。
>例えば A003 が シート1 と シート2で~~
と文章にはあるけれど、コードは「"Sheet2", "Sheet3"」となっているので、これに関しても不明ですが、コードの内容を採用。
Sub sample()
Dim cnt, w, r
cnt = 0
For Each w In Worksheets(Array("Sheet2", "Sheet3"))
Set r = Range(w.Cells(2, 2), w.Cells(Rows.Count, 2).End(xlUp))
cnt = cnt + WorksheetFunction.CountIf(r, "A003")
Next w
Cells(2, 8).Value = cnt
End Sub
No.1
- 回答日時:
こんばんは
>Activesheetのみしか カウントされませんです。
というよりも、「配列の後の方のシート」しかカウントされないのでは?
ループの中で、変数cntに個々のシートの個数を上書きしているだけですので。
合計を求めたいという事でしょうか?
であるなら、(初期値を0にしておいて)ループ内では加算してゆく必要があります。
それぞれの個数を求めたいのなら、
ループ外でシートに書き出すのではなく、ループ内で異なるセルに値を書き出すようにする。
とかでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Visual Basic(VBA) 2つ目のコンボボックスが動作しません。 3 2023/03/25 12:29
- Visual Basic(VBA) エクセル VBA 処理スピードを上げたいのですが。 6 2023/03/31 20:52
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) 形式を選択して貼り付け 以下のコードで「元」シートと「先」シートのA列に同じ値があったら指定範囲をコ 5 2022/11/11 07:30
- Visual Basic(VBA) 抽出結果を別シートに貼り付ける 2 2022/07/09 22:59
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) ワークシートごとに計算結果 2 2022/04/30 22:00
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
別のシートから値を取得するとき
-
Excelマクロのエラーを解決した...
-
【ExcelVBA】全シートのセルの...
-
ユーザーフォームに入力したデ...
-
ExcelのVBAのマクロで他のシー...
-
【Excel VBA】Worksheets().Act...
-
実行時エラー1004「Select メソ...
-
同じ作業を複数のシートに実行...
-
実行時エラー'1004': WorkSheet...
-
excelのマクロで該当処理できな...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
エクセルのシート名変更で重複...
-
XL:BeforeDoubleClickが動かない
-
VBAでオブジェクト変数にsetし...
-
VBA 最終行まで数式をコピーする
-
エクセルVBA Ifでシート名が合...
-
VBA 検索して一致したセル...
-
ブック名、シート名を他のモジ...
-
Excel マクロについての相談
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
別のシートから値を取得するとき
-
ユーザーフォームに入力したデ...
-
【ExcelVBA】全シートのセルの...
-
同じ作業を複数のシートに実行...
-
Excelマクロのエラーを解決した...
-
excelのマクロで該当処理できな...
-
XL:BeforeDoubleClickが動かない
-
ExcelVBA シート名を複数セルか...
-
実行時エラー'1004': WorkSheet...
-
VBA 存在しないシートを選...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ブック名、シート名を他のモジ...
-
【Excel VBA】Worksheets().Act...
-
ExcelのVBAのマクロで他のシー...
-
エクセルのシート名変更で重複...
-
特定の文字を含むシートだけマ...
-
シートが保護されている状態で...
-
Excel マクロについての相談
-
VBA 検索して一致したセル...
おすすめ情報
もしかして redim preserve とかつかうのでしょうか
これだと 変だし おしえてくれませんでしょうか
お願い致します。
Dim x
cnt = 0
For Each w In aya
With Worksheets(w)
Set r = .Range("B2", .Cells(Rows.Count, "B").End(xlUp))
ReDim Preserve x(cnt)
x(cnt) = wf.CountIf(r, "A003")
End With
Next
Cells(2, 8) = x