Excel2007 複数重複チェックの方法を解説

このQ&Aのポイント
  • Excel2007で複数条件の重複チェックの方法を説明します。指定した範囲で重複しているデータを特定し、グループごとに表示することができます。
  • 以下の表のC列に表示される文字は、重複しているデータをグループごとに特定するためのマクロを使っています。マクロを使用しない場合は、COUNTIFS関数を使って重複を判定し、条件ごとにグループ分けする必要があります。
  • Excelでの実行方法とマクロのサンプルソースについては、以下のリンクを参考にしてください。Excelのデータの重複チェックとグループ分けについて詳しく解説されています。
回答を見る
  • ベストアンサー

Excel2007 複数重複チェック

Excel2007で、複数条件の重複チェックの方法を教えてください。 以下の表があります。 A1:あああ B1:A C1:=IF(COUNTIFS($A$1:$A$4,A1,$B$1:$B$4,B1)>1,"重複","") A2:いいい B2:B  C2:=IF(COUNTIFS($A$1:$A$4,A2,$B$1:$B$4,B2)>1,"重複","") A3:あああ B3:A C3:=IF(COUNTIFS($A$1:$A$4,A3,$B$1:$B$4,B3)>1,"重複","") A4:いいい B4:B  C4:=IF(COUNTIFS($A$1:$A$4,A4,$B$1:$B$4,B4)>1,"重複","") C1~C4には"重複"が表示されますが、これを、重複しているグループ で表示する方法はありますでしょうか? 期待する結果 A1:あああ B1:A C1:グループ1 A2:いいい B2:B  C2:グループ2 A3:あああ B3:A C3:グループ1 A4:いいい B4:B  C4:グループ2 C列に表示する文字は、どれとどれが組みになっているかわかればなんでも結構です。 すみませんが、Excelで実行する場合と、マクロで行う場合のサンプルソース を教えていただけないでしょうか? よろしくお願いします。

  • torum
  • お礼率61% (19/31)

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! 「グループ」の分け方はA列・B列の組み合わせ数でよいのでしょうか? VBAになってしまいますが、そう解釈しての一例です。 Sheet1に元データがあり、Sheet2を作業用のSheetとして使用していますので Sheet2は全く使っていない状態にしておいてください。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, cnt As Long, str As String, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("Sheet1") Set wS2 = Worksheets("Sheet2") For i = 1 To wS1.Cells(Rows.Count, "A").End(xlUp).Row str = wS1.Cells(i, "A") & wS1.Cells(i, "B") Set c = wS2.Range("A:A").Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then cnt = cnt + 1 With wS2.Cells(cnt, "A") .Value = str .Offset(, 1) = "グループ" & cnt End With wS1.Cells(i, "C") = wS2.Cells(cnt, "B") Else wS1.Cells(i, "C") = c.Offset(, 1) End If Next i wS2.Cells.Clear End Sub 'この行まで ※ もしグループ分けの種類を確認したい場合は 最後の >wS2.Cells.Clear の行を削除してマクロを実行してみてください。 Sheet2のA・B列にグループの種類が表示されているはずです。m(_ _)m

torum
質問者

お礼

目的は達せられました。 ありがとうございました。

その他の回答 (1)

  • kuma56
  • ベストアンサー率31% (1423/4528)
回答No.1

>すみませんが、Excelで実行する場合と、マクロで行う場合のサンプルソースを教えていただけないでしょうか? Excelで実行する場合・・・・・と言うのは、関数式で表示させるという事でいいのかな? マクロで行う場合っていうのも、Excelのマクロ機能って事ですよねぇ?? とりあえず・・・・・・ >C列に表示する文字は、どれとどれが組みになっているかわかればなんでも結構です。 何でも結構っていうけど、こういうのは有りかなぁ・・・・?? C1に入っている式を、 =IF(COUNTIFS($A$1:$A$4,A1,$B$1:$B$4,B1)>1,A1&B1,"") こうして、それをC4セルまでコピーしてやると、それぞれ あああA と いいいB と言う風に表示される。 :$A$4,や$B$4,の4をもっと大きな数字に変えてやって、A列に あああ いいい 以外に ううう や えええ 等をどんどん入力してみて、B列も C や D などいろいろな組み合わせで入力してみて表示を確認してみてちょ!

torum
質問者

お礼

目的は達せられました。 ありがとうございました。

関連するQ&A

  • 重複チェック

    マクロ初心者です。(エクセル2003使用) A列の管理番号が重複していたら、C列に☆をつけるようなマクロを作りたいのですが、うまくできません。 すみませんが、どなたか教えてください。 (Sheet1) A          B      C アカ154-7 アカ226-9        ☆ アカ446-0 アカ675-4        ☆ アカ669-8 アカ226-9        ☆ アカ118-5 アカ675-4        ☆ アカ226-9        ☆ (マクロ) Sub 重複() Dim 管理番号 As Variant Dim motoSht As Worksheets Dim セル範囲 As Range With Sheets("Sheet1") 管理番号 = Sheet2.Range("A2").Value Set セル範囲 = Range("A2:B65536").CurrentRegion.Find(管理番号, , LookAt:=xlWhole) If 同じ管理番号があったら Then            Range("A").CurrentRegion.Offset(2) = ☆ ElseIf Not セル範囲 Is Nothing Then MsgBox "管理番号は、重複していません" End If End With End Sub ご回答よろしくお願いいたします。

  • 【エクセル2010】表全体文字列の重複

    エクセル2010について教えて頂きたいのですが..... 【例】     A      B      C   1 あああ   ああ     ううううう 2 いいいい  ううう    かか 3 ううう    あああ   いい 4 ええ    いいい    ああああ 5 あああ   ううう     おおお と入力した場合 A行【A1】【A5】とB行【B3】が 同内容にて重複しますが この場合 [あああ]にて検索する以外 重複を見つける方法が無いのでしょうか? (つまり重複そのものを見つける機能です。) また、他の方法がある場合、 その方法では【C4】ああああ を重複として拾いますか、拾いませんか。 ちなみに実際の表は列が10、行が100ぐらいあります。 いくつかの表で同様に調べなければなりません。 マクロはよくわかりません。よろしくお願いします。

  • Excel マクロ 重複チェックについて

    Excel マクロ 重複チェックについて Sheet3のA列とB列に製品番号が入っています。 A列とB列を比較して、A列と同じ番号がB列に2個以上ある場合のみ C列にフラグ「1]を入れたいです。 Sub RetsuCheck() Dim i As Long Dim ws1 As Worksheet Set ws1 = Worksheets("Sheet3") '「Sheet3」シートでA列とB列の重複をチェック。 For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, "A") = ws1.Cells(i, "B") Then ws1.Cells(i, "C") = 1 End If Next i End Sub 1個の場合には上記マクロで解決するのですが、 2個以上の場合にどうようなマクロを記載すればよいのか アドバイスを頂けませんでしょうか。 よろしくお願いいたします。

  • Excel2007でCOUNTIFS前ゼロ否定条件

    Excel2007 のCOUNTIFS関数での否定条件の 指定方法について教えてください。 VBAのマクロの中で  (略)  For i = 1 to 10    Cells(i, "B").Formula = "=COUNTIFS(" & "A1:A10, $C$" & i & ")"  Next i   のような形で COUNTIFSを利用しています。    COUNTIFSの条件に <>を使って否定条件を指定したいのですが、以下の  ように期待した動作になりません。     例   A      B       C        D            1 '080  一般品    <>'080      =COUNTIFS(A1:A5,C1)  2 '020  一般品    <>一般品  =COUNTIFS(B1:B5,C2) 3 '040  一般品 4 '060   特別品  5 '080    一般品  セルC1の記述を変えた結果は以下の通りです。       C1      D1      備考 1)  <>'080   5    3 が入ってほしい。 2)  <>080   5    ' の有無で結果は変わらず。     '(シングルクォーテーション)は接頭辞で上記結果には無関係と理解。 3)  "<>'080"   0    "<>'080" 全体を条件値として認識してしまう。 4)  '080      2   当然 5)  <='060    3   当然   ちなみに C2に <>一般品 と条件を設定すると D2には1と期待通りの値が入ります。  1)2) の結果から A列に記述されている'080と セルC1の式に書か  れた '080 が、なぜか別の値と評価され 結果 D1が 5 となっていると理解しています。 A列のシングルクォーテーションは削除、A列の書式を文字列とし 文字列"080"とIF関数で比較すると以下の結果でした。   A    B     B列の式            1 080   FALSE  IF(A1<>"080",TRUE,FALSE)   2 020   TRUE IF(A2<>"080",TRUE,FALSE) 3 040   TRUE IF(A3<>"080",TRUE,FALSE) 4 060    TRUE  IF(A4<>"080",TRUE,FALSE) 5 080    FALSE IF(A5<>"080",TRUE,FALSE)   Excelの「数式」メニュー -「ワークシート分析」-「数式の検証」で C1セルに <>'080 、<>080、"<>'080" 、<='060 を指定した時、それぞれ 1) COUNTIFS(A1:A5,"<>'080")   2) COUNTIFS(A1:A5,"<>080")   3) COUNTIFS(A1:A5,"""<>'080""") 5) COUNTIFS(A1:A5,"<='060")  と評価されています。   また VBAのテクニックを解説するWebなどでは、"<>"と値'080を& でつなげる方法も紹介されていましたが、上記の場合結局 COUNTIFS(A1:A5,"<>080") → 5 と評価されて  しまいます。      文字列同士で比較すれば、期待する結果になりそうですが 条件の書き方には工夫がいりそうです。どのように記述すればよいでしょうか   お知恵をお借りしたくいと思います。どうかよろしくお願い致します。 以上

  • Excel2002でIF関数を使った重複調べができない

    Excel2002でIF関数を使って重複データを調べています。 例えば   A  B 1 389 2 359 3 359 のとき、 B1に0を入れ、B2にIF関数で「IF=(A1=A2,1,0)」としていますが、あきらかにA2とA3は同じであるのにB3には「0」と出ます。 これは関数が反映されていないということだと思うのですが、なぜでしょうか。 数字はテキスト形式で入力してあります。 よろしくお願いいたします。

  • EXCEL重複データのチェックがうまくいきません

    重複データを調べたいのですがうまくいきません。 どこが間違っているのか教えてください。 またもっと簡単な方法があれば教えてください。 A2「20060130」 B2「20060228」 C2「19010130」 I2には「=A2&B2&C2」で【200601302006022819010130】 という数字が入っています。 こういうデータが1000件ほどあります。 =IF(COUNTIF($I$2:$I$1000,I2)>1,"*","") 過去ログで調べて、上記の式をJ2に入れて 重複チェックをしようとしたのですが、下3ケタが 違っていても重複と判断されてしまうのです。 200601302006022819010130 200601302006022819010210  ←下3ケタが違うので重複ではないのです。 宜しくお願いいたします。

  • 【エクセル】データの重複チェック

    次のようなデータが入力されているとします。 A列/B列/C列/D列/E列/F列 1行:都道府県/市区町村/data1/check1/data2/check2 2行:東京/新宿/1/""/1/"" 3行:東京/新宿/2/""/2/"重複" 4行:東京/新宿/3/""/3/"" 5行:東京/渋谷/1/重複/4/"" 6行:東京/渋谷/2/""/5/"" 7行:東京/渋谷/3/""/6/"" 8行:東京/渋谷/4/""/2/"重複" 9行:東京/渋谷/1/重複/7/"" ここで、check1は、 「都道府県」のグループでdata1に重複があれば、「重複」表示をさせます。 また、check2は、 「市区町村」のグループでdata2に重複があれば、「重複」表示をさせます。 例えば、 セルD2=IF(COUNTIF($C$2:$C$4,$C$2:$C$4)>1,"重複","") セルF2=IF(COUNTIF($E$2:$E$9,$E$2:$E$9)>1,"重複","") というように関数を入力して、2行目以下にコピペすればいいのですが、 実際は1万行以上のデータがあり、「都道府県」「市区町村」も多くのグループがあるため いちいち範囲を指定するのも大変です。 そこで、上記関数のように手動で範囲を指定しなくても、 自動で範囲指定をして重複チェックができる良い方法があれば教えてください。 できれば関数がいいのですが、VBAでも構いません。 ご教授のほど、よろしくお願いします。

  • Excel2002 ランダムに並べ替える関数

    Excel2002で掛算九九の100マス計算を作っています。 マクロを使って、ボタンにマクロを登録し、九九の問題を作成したいのです。 1~10の数字をランダムに重複しないように、A1:J1に表示したいです。 A B C D E 1 9 7 8 1 2・・・ 2 2 3 8 4 1 5 4 でA1:J1の1~10の数字ををランダムに並び替えたいのですが、そういった関数はありますか? RANDBETWEEN関数を使ってみたんですが、重複する数字が返ってきてしまいます。 何か良い方法はありますか?

  • Excel2003で重複したデータを削除したい

    Excel2003で重複したデータを削除する方法を教えて下さい。 A・B・C・Dの列の全てが重複するデータを削除したいのですが、可能ですか?AとB列は重複するけど、CやDのデータは重複していなければ、残しておきたいです。 以下イメージです。 行/列  A   B    C    D 1    なす  商店  100円  3/4  2    なす  商店  200円  3/2 3    なす  商店  200円  3/2 ------------------------------------- 以下、重複データ削除後のイメージ。 1    なす  商店  100円  3/4  2    なす  商店  200円  3/2

  • 重複しないグループ分けをエクセルで

    excel2010を使用しています。 1~9までを3つずつ3グループに分ける作業を4回行い、4回とも重複しないようにしたいのですが、エクセルの関数でうまく重複を避ける方法があるのでしょうか?         Aグループ Bグループ Cグループ 1回目    1-2-3  4-5-6  7-8-9 2回目    1-4-7  2-5-8  3-6-9 3回目    ・・・ 4回目    ・・・ のようにすべての回で重複しないようにしたいと思っています。 9つを3つずつ・・・は手書きでもなんとかなると思いますが 1~12を4つずつ3グループに重複しないで・・・ 1~15を5つずつ3グループに重複しないで・・・ 1~18を6つずつ3グループに重複しないで・・・ というように応用したいと思いますので、ぜひエクセルの関数かVBAのプログラムで作成できるようにしたいと思っていますが、どのような関数をどのように使えばいいのかわからず困っています。 どなたかご教授いただけないでしょうか。   

専門家に質問してみよう