• 締切済み

Excelの順不同の難しい重複チェックについて

    列A     列B     列C    列D     列E     列F     列G     列H 行1  愛      青      パンチ                            行2  愛      勇気     友達   BB    AA    CC            行3  勇気     愛      友達   AA    CC    BB            行4  勇気     弁護士    正義                             行5  勇気     愛                                     行6  コイ     ダイス    ダチ                             行7  ダイス    ダチ     コイ                             行8  友達     愛      勇気   CC    AA    BB 上記のような6列のデータ(データによってはB列で終わっていることもあります。) の順不同で行での重複をチェックする関数を知りたいです。 行2、3、8と行6、7が順番は違いますが同じデータなので重複と出したいです。 こちらのサイトで色々聞いたので、3列の場合には E1に↓を入れて下にコピー =IF(COUNTA(A1:C1)=0,"",A1&"_"&B1&"_"&C1&"_"&COUNTA(A1:C1)) D1に↓を入れて下にコピー =IF(SUMPRODUCT(1*(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E$1:E1,A1,""),B1,""),C1,"")="___"&COUNTA(A1:C1)))>1,"重複","") 上記のように教わり、6列のデータが出てきてしまったので それに対応できるように、 列G1行目に =IF(COUNTA(A1:F1)=0,"",A1&"_"&B1&"_"&C1&"_"&D1&"_"&E1&"_"&F1&"_"&COUNTA(A1:F1)) こちらの関数を入れ下にドラッグし、 列H1行目には =IF(SUMPRODUCT(1*(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(H$1:H1,A1,""),B1,""),C1,""),D1,""),E1,""),F1,"")="___"&COUNTA(A1:F1)))>1,"重複","") 上記のように関数を追加したのですが、下記のような欲しいデータがどうしても出てきません。     列A     列B     列C    列D     列E     列F     列G     列H 行1  愛      青      パンチ                            行2  愛      勇気     友達   BB    AA    CC            行3  勇気     愛      友達   AA    CC    BB    重複      行4  勇気     弁護士    正義                             行5  勇気     愛                                     行6  コイ     ダイス    ダチ                     重複      行7  ダイス    ダチ     コイ                     重複      行8  友達     愛      勇気   CC    AA    BB    重複      3列の時にはできた関数なので6列も可能だと思うのですが何がいけないのか調べていたら こんな時間になってしまい、助けをお願いしたく再度書き込みしております。 何卒よろしくお願いいたします。

みんなの回答

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

ANo.3です > 教えて頂いたものですと正しく重複チェックできないものがありました。 それは失礼。 どの様なパターンの時でしょう? 提示例の「行6」の重複は単なる記入ミスかと思いましたが、「行6」にも重複が表示されることがお望みなのでしょうか。

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.4

回答No.3で誤動作の指摘がありましたので訂正させて頂きます。 G1=A1&" "&B1&" "&C1&" "&D1&" "&E1&" "&F1 データの区切りにスペースを入れました。 H1=IF(SUMPRODUCT((TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(G$1:G1,A1,""),B1,""),C1,""),D1,""),E1,""),F1,""))="")*1)>1,"重複","") H1セルでは区切りの空白が残るので全てがマッチしたときはTRIM関数でスペースを除去すると文字列数が0("")になります。 チェックするデータの個数に関係なく比較対象の文字数が0になったとき重複と見做すようにすれば良いでしょう。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

画面だと見づらい「_(アンダースコア)」を使ったせいで紛らわしかったですね。 すでにNo.1の方が指摘されている内容ではありますが…… G1=IF(COUNTA(A1:F1)=0,"",A1&"_"&B1&"_"&C1&"_"&D1&"_"&E1&"_"&F1&"_"&COUNTA(A1:F1)) H1=IF(SUMPRODUCT(1*(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(G$1:G1,A1,""),B1,""),C1,""),D1,""),E1,""),F1,"")="______"&COUNTA(A1:F1)))>1,"重複","") ただ、No.1の方の回答の方がシンプルですが、 ・「勇気、愛」と言う行と「勇気愛」と言う行が有った場合、重複と見なされる ・「勇気、愛」と言う行と「勇気、愛、恋」と言う行が有った場合、重複と見なされると言う問題が有ります。

erina221
質問者

補足

教えて頂いたものですと正しく重複チェックできないものがありました。

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

こんにちは! VBAになってしまいますが、一例です。 何列あっても対応できるようにしてみました。 元データはSheet1のA1セルからあるとし、A列だけは最終行まで必ずデータが入っているとします。 尚Sheet2を作業用のSheetとして使用していますので、 Sheet2は使っていない状態にしておいてください。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, j As Long, k As Long, lastRow As Long, lastCol As Long Dim c As Range, wS As Worksheet Set wS = Worksheets("Sheet2") With Worksheets("Sheet1") lastCol = 1 Do While WorksheetFunction.CountA(.Columns(lastCol)) > 0 lastCol = lastCol + 1 Loop Set c = .Columns(lastCol - 1).Find(what:="重複", LookIn:=xlValues, lookat:=xlWhole) If c Is Nothing Then lastCol = lastCol - 1 Else .Columns(lastCol - 1).ClearContents lastCol = lastCol - 2 End If lastRow = .UsedRange.Rows.Count Range(.Cells(1, "A"), .Cells(lastRow, lastCol)).Copy wS.Range("B1") For i = 1 To wS.Cells(Rows.Count, "B").End(xlUp).Row j = wS.Cells(i, Columns.Count).End(xlToLeft).Column Range(wS.Cells(i, "B"), wS.Cells(i, j)).Sort key1:=wS.Cells(i, "B"), order1:=xlAscending, _ Header:=xlNo, Orientation:=xlLeftToRight For k = 2 To j If wS.Cells(i, k) <> "" Then wS.Cells(i, "A") = wS.Cells(i, "A") & wS.Cells(i, k) & "_" End If Next k Next i For i = 1 To lastRow If WorksheetFunction.CountIf(wS.Range("A:A"), wS.Cells(i, "A")) > 1 Then .Cells(i, lastCol + 1) = "重複" End If Next i wS.Cells.Clear End With End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.1

>上記のように関数を追加したのですが、下記のような欲しいデータがどうしても出てきません。 タイプミスが有ることと単純な見落としがあります。 タイプミス部分 H1=[省略]SUBSTITUTE(H$1:H1,A1,"")[省略] 自身のセルを参照のため循環になります。 H1=[省略]SUBSTITUTE(G$1:G1,A1,"")[省略] 見落とし部分 H1=[省略]="___"&COUNTA(A1:F1)[省略] アンダースコア(_)の数が不足しています。 元データが3列増えているのでG列のデータにはアンダースコアが3文字増えます。 従って、比較対象が全て不一致となり重複なしの判定になります。 単純ミスを防止するには不要な情報を介在させないことを推奨します。 G1=A1&B1&C1&D1&E1&F1 H1=IF(SUMPRODUCT((SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(G$1:G1,A1,""),B1,""),C1,""),D1,""),E1,""),F1,"")="")*1)>1,"重複","")

関連するQ&A

  • Excelの難しい重複チェックについて悩んでいます

    Excelの難しい重複チェックについて悩んでいます。 ★本文     列A     列B     列C     行1  愛      青      パンチ 行2  愛      勇気     友達    行3  勇気     愛      友達   行4  勇気     弁護士    正義    行5  勇気     愛            行6  アイ     ユウキ    トモ    行7  ユウキ    トモ     アイ     ExcelのA列~C列に上記のようにキーワードが記載されているとします。 記載されているキーワードは同一で並び順のみ違うものは重複として記載する関数を教えていただきたいです。 更に、並び順だけが違う行の2つ目以降の行にのみ「重複」と記載させたいです。 (例)     列A     列B     列C    列D 行1  愛      青      パンチ   行2  愛      勇気     友達    行3  勇気     愛      友達   重複 行4  勇気     弁護士    正義    行5  勇気     愛            行6  アイ     ユウキ    トモ    行7  ユウキ    トモ     アイ   重複 行2と行3は順番が異なるだけですべて同じキーワードが掲載されています。 この時、行3のみに「重複」と記載させたいです。 また、 行6と行7は順番が異なるだけですべて同じキーワードが掲載されています。 この時、行7のみに「重複」と記載させたいです。 この様に表全体のキーワードで重複しているキーワードがあるかないのかチェックしたいです。 様々な関数を調べて組み合わせをしてみましたが、 どうしても出来ませんでした。 ものすごく困っているので、お力になっていただけないでしょうか? 宜しくお願いいたします。

  • エクセルで、規則性はあるのですが、数字と文字が混在しているものを重複しないように抽出したいのですが。

    エクセルで、シート1に列A(数値)と列B(文字列)を結合したものが、 列C(列A&列B)であります。 これをシート2で列Cの文字列が重複しないように抽出したいのです が、どうしたらよいのでしょうか? シート1     列A  列B  列C 行1  項目A 項目B 項目C 行2  2   CC  2CC 行3  3   AA  3AA 行4  5   BB  5BB 行5  7   PP  7PP 行6  2   CC  2CC 行7  5   AA  5AA これをシート2で、     列C 行1  項目A 行2  2CC 行3  3AA 行4  5BB 行5  5AA 行6  7PP このように重複するものを統合した形でまとめたいのですが、 わかるかたがいれば教えてもらえないでしょうか?

  • 難易度が非常に高いExcelの重複チェック関数

    Excelの難しい重複チェックについて悩んでいます。 ★本文     列A     列B     列C    列D 行1  愛      青      パンチ   行2  愛      勇気     友達    行3  勇気     愛      友達    行4  勇気     弁護士    正義    行5  勇気     愛            行6  アイ     ユウキ    トモ    行7  ユウキ    トモ     アイ    行8  友達     愛      勇気    ExcelのA列~C列に上記のようにキーワードが記載されているとします。 記載されているキーワードは同一で並び順のみ違うものは重複として記載する関数を教えていただきたいです。 更に、並び順だけが違う行の2つ目以降の行にのみ「重複」と記載させたいです。 (例)     列A     列B     列C    列D 行1  愛      青      パンチ   行2  愛      勇気     友達    行3  勇気     愛      友達   重複 行4  勇気     弁護士    正義    行5  勇気     愛            行6  アイ     ユウキ    トモ    行7  ユウキ    トモ     アイ   重複 行8  友達     愛      勇気   重複 行2、行7、行8が重複しており、 この時、行7、行8のみに「重複」と記載させたいです。 また、 行6と行7は順番が異なるだけですべて同じキーワードが掲載されています。 この時、行7のみに「重複」と記載させたいです。 この様に表全体のキーワードで重複しているキーワードがあるかないのかチェックしたいです。 また行が今は3列の設定になっていますが、5列になった場合は関数のどの部分を変更すれば いいかも合わせて教えて頂けると幸いです。 様々な関数を調べて組み合わせをしてみましたが、 どうしても出来ませんでした。 ものすごく困っているので、お力になっていただけないでしょうか? 宜しくお願いいたします。

  • エクセルで重複行をすべて削除するにはどうすればよいでしょうか?

    例えば、昇順で並べ替えて以下のようにエクセルで準備したとします。   A列 1行 aa 2行 aa 3行 bb 4行 bb 5行 cc 6行 cc 7行 dd 8行 ee そこで重複する行ごと削除したいのですがどうすればよいでしょうか? 削除結果は   A列 1行 dd 2行 ee 上記のようにしたいです。 重複する1行だけは削除できたのですが、 2行ごと削除の方法がわかりません。 ご教授いただきたく存じます。 よろしくお願いいたします。

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

    次のようなデータが入力されているとします。 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でも構いません。 ご教授のほど、よろしくお願いします。

  • Excel 複雑なセル埋めのVBA

    エクセルで入力済みのデータをテーブル形式にするためにVBAを組んでいますが突き当たりました、お知恵を拝借させてください。現在成形出来ているのは以下の状態です。    A列     B列    C列 1行  AA      2     1 2行 3行  BB      3     2 4行 5行 6行 7行 8行 9行  CC      2     3 10行 11行 12行 13行 14行 これを以下のようにB列を埋めたいと考えています。A列を埋めるVBAは当方で分かります。      A列    B列    C列 1行    AA     1     1 2行    AA     2 3行    BB     1     2 4行    BB     2 5行    BB     3 6行    BB     1 7行    BB     2 8行    BB     3 9行    CC     1     3 10行   CC     2 11行   CC     1 12行   CC     2 13行   CC     1 14行   CC     2 B1に2が入っていてC1に1が入っているときはB1から下へ1,2の連番を1回入れます、B3に3と入っていてC3に2と入っているときはB3から下へ1,2,3の連番を2回繰り返します、同じようにB9以降も処理しています。連番のスタートは必ず1で、現在B列に入っている数字が連番の最後に当たる数値でC列が繰り返し回数という事です。上の例ではB列を書き直していますが、新たにD列にB列に入れたい連番の列を作る方法でもいいと思っています。 もし表が崩れていたら済みませんでした。恐れ入りますがポインタでも結構ですのでご教授下さい、よろしくお願いします。

  • エクセル2003のVBAを教えて

    エクセル2003のVBAを教えてください。 次の対象データで、(1)(2)(3)の作業が出来るエクセルVBAを教えて下さい。 (1)(2)(3)個々のVBAでお願いします。 ●対象データ:種類(A列)、文字(B列)、    データの行数:不特定なので、データのある最終行までとします。 ●教えていただきたい項目  (1):種類だけを(C列)に取り出す。  (2):種類の先頭に空白の行を3行入れて、追加の2行目の種類(A列)に文字(B列)を入れる。  (3):種類が5行以上あるときは、5行ごとに空白行を追加する。 ●対象データ 種類(A列)   文字(B列) AA       あああ BB       いいい BB       いい BB       いいい CC       うう CC       うう DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ DD       ええええ ●(1)のVBAの結果(このようになるVBAを教えてください。) (C列) AA BB CC DD ●(2)、(3)のVBAの結果(このようになるVBAを教えてください。) 種類(A列)    文字(B列) あああ AA        あああ いいい BB        いいい BB        いいい BB        いいい うう CC        うう CC        うう ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ DD        ええええ

  • 【少し急いでます】エクセルについて教えてください!

    Excel2000を使っています。 A列に重複するデータがあり、B列に別データがあります(20000行強) 例)     A  B 1  001 aaa 2   001 bbb 3   001 ccc 4   002 aa 5  002 bb 6  003 aaa 7  003 bbb 8  004 ddd 9   004 eee 10  005 aa 11  006 bbb A列で重複する001は3行あり、重複しているデータは1行にまとめてB列のaaa、bbb、cccをつなげたいです。(わかりづらくてすみません) 例)     A      B 1  001  aaa・bbb・ccc 2  002   aa・bb 3  003  aaa・bbb というようにまとめたいです。 どのような方法がありますでしょうか? よろしくお願い致します。

  • Excel 2007 重複データのチェックについて

    Excel 2007 重複データのチェックについて A列にあるデータ(約100件)で重複している値がある 行についてB列にフラグをつけます。 やりたいことはどの行とどの行が重複しているのかを すぐに分るようにしたいです。 添付画像のように重複している行に番号をつけていくことは可能でしょうか。 番号は1から順番に増えていきます。 自分は下記を考えましたが、これでは重複している行に「重複データ」と入る だけでわかりづらいです。 =IF(COUNTIF($A$2:A2,A2)>1,”重複データ”,”○”) よろしくお願いいたします。

  • エクセル2010での重複データチェック

    エクセル2010で作成したデータの重複データチェックをしたいです。 顧客コードと、接触日 の両方とも同じデータが入っていれば 最初に出てきた行に1回目 再度出てきたデータ行に重複と表示したいです。 シートの項目(見出し)は下記のようになっています。 A列:顧客コード B列:顧客名 C列:接触日 D列:面談要旨 F列:結果 皆様、年末のお忙しいところ申し訳ありませんが、ご教示ください。 上記説明では、わかりにくいかと思い、スクリーンショットも添付いたします。 よろしくお願いいたします。

専門家に質問してみよう