[[20210305153715]] 『シートごとのCountifをまとめたい』(チェスナット) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『シートごとのCountifをまとめたい』(チェスナット)

お世話になります。
色々と探してみたものの、理想とする形にならず質問させていただきます。
  A B  C    D・・・L
1   日付 番号  管理番号
2   3/1 123456  789456

このようにデータが入ったものが10シート600行程度あります。
重複確認のため、A1から下には「=COUNTIF(C:C,C2)+COUNTIF('2'!C:C,'2'!C2)・・・」(シート名は「1」、「2」、「3」です)
の関数が10シート分A1からA600までコピーしてあり、数字が「2」以上になると行の色が変わるように、条件付き書式が入れてあります。
現在は10シートのうち5シートしかデータは入っていませんが、重いため今後のことを考え軽量化したいです。

Sub test01()

Dim Ws As Worksheet
For Each Ws In Worksheets
Ws.Activate

lr = Range("B10000").End(xlUp).Row
For i = 1 To lr
c = Application.WorksheetFunction.CountIf(Range("C:C"), Cells(i, "C"))
If c >= 2 Then
Cells(i, "A") = "●"
End If
Next i

Next Ws

End Sub

これを作成しましたが、同じシートの重複の確認しかできませんでした。
希望は、他のシートと参照しての重複確認し、重複するものの行に●を入れたいです。
どのような方法がありますでしょうか?

< 使用 Excel:Excel2013、使用 OS:Windows10 >


どのWorkSheetのどのセルをターゲットとするかを
指定してみてください。

ご自身でコードを書いたのであれば、可能だと思いますよ。

(tkit) 2021/03/05(金) 16:49


様々なサイトからの応用で作ってみたので、なかなか難しく苦戦しております。
関数はなんとかなったものの、VBAで他のワークシートとの参照方法が分かりませんでした。

(チェスナット) 2021/03/05(金) 16:59


こちらを参考にしてください。
 https://excel-ubara.com/excelvba1r/EXCELVBA517.html
(tkit) 2021/03/05(金) 17:15

返信遅くなりました。
ご提示いただいたページを参照してみましたが、独学のVBAでは応用することが困難でした。
もう少しヒントを頂けないでしょうか?
(チェスナット) 2021/03/08(月) 09:25

まず、現状把握です。
・このマクロブック(ThisWorkbook)にワークシート数(Worksheets.Count)が10シート
・各シートのC2セル以降の値に重複があるかチェック
・あった場合、同行のA列セルに●を代入
上記の場合、コードを書く上で実現していないのが、
各シート間でのチェックができない。
と認識しています。

コードにFor Each文がありますので、理解されている前提で。
比較元のセル値に対し、比較対象は各シートのC2セル以下の値ですよね。
例えば、ご自身で書かれているコードを少しいじって、以下のような感じです。

 Sub sample()
     Dim 検索番号 As Long
     検索番号 = Worksheet("1").Cells(2, "C").Value
     Dim Ws As Worksheet
     For Each Ws In Worksheets
         lr = Ws.Cells(Rows.Count, "C").End(xlUp).Row
         For i = 2 To lr
             If Ws.Cells(i, "C").Value = 検索番号 Then
                 '▼重複した対象シート名、セルアドレスをイミディエイトウィンドウへ出力
                 Debug.Print Ws.Name; Ws.Cells(i, "C").Address
             End If
         Next i
     Next Ws
 End Sub

実際の比較元は、各シートのC2セル以下の値ですので、同様にループする必要があることは
理解できますか。

理解できたのであれば、書けると思いますよ。

効率のいい(時間短縮)のコードにするのは、次のステップですので、まずはここまで理解しご自身で
試してみてください。

(tkit) 2021/03/08(月) 14:08


tkit様
ご返信ありがとうございます。
現状把握は記載の通りです。
ご提示いただいたコードで考えてみます。
ありがとうございます。
(チェスナット) 2021/03/08(月) 15:52

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.