Excel2010で行ごとの重複削除

このQ&Aのポイント
  • Excel2010で行ごとに重複削除をしたいと思っています。
  • データタブに重複の削除があるのですが、列ごとにやるようなので、一度シート全体を行と列を入れ替えて別シートにコピーして、1列目から順に重複の削除を実行するのは大変です。
  • 自動化する方法はありませんか?
回答を見る
  • ベストアンサー

Excel2010で行ごとの重複削除

Excel2010です。 A行目 1 3 5 5 2 2 3 B行目 2 3 5 5 4 4 C行目 1 9 7 9 9 ↓ A行目 1 3 5 2 B行目 2 3 4 5 C行目 1 7 9 というように、行ごとに重複の削除をしたいと思っています。 データタブに重複の削除があるのですが、列ごとにやるようなので、一度シート全体を 行と列を入れ替えて別シートにコピーして、 1列目全体を選択して、1列目で重複の削除を実行 2列目全体を選択して、2列目で重複の削除を実行 ・・・ というやり方もあるのですが、今扱っているエクセルは197行197列あります。 列選択、重複の削除アイコンをクリックするのを197回繰り返すのは大変です。 自動化する方法はないものでしょうか?

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

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

こんばんは! A行目となっているのは1行目のことですよね? ↓の画像のような配置になっていて、行単位で判断して重複するものだけを削除! という解釈での方法です。 VBAになってしまいますが・・・ 一例です。 画面の左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row '1行目からA列の最終行まで For j = Cells(i, Columns.Count).End(xlToLeft).Column To 1 Step -1 'i列の最終列からA列まで If WorksheetFunction.CountIf(Range(Cells(i, 1), Cells(i, j)), Cells(i, j)) <> 1 Then Cells(i, j).Delete (xlToLeft) End If Next j Next i End Sub 'この行まで こんな感じで良かったのですかね?m(__)m

msndance
質問者

お礼

まさにそれです。ありがとうございます。これで作業が進みそうです。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

>列選択、重複の削除アイコンをクリックするのを197回繰り返すのは大変です。 という事で,それをマクロで自動化してみます。 ALT+F11を押す 現れた画面で挿入メニューから標準モジュールを挿入する 現れたシートに下記をコピー貼り付ける Sub Macro1()  Dim wo As Worksheet  Dim wt As Worksheet  Dim wr As Worksheet  Dim c As Long  Set wo = ActiveSheet  Set wt = Worksheets.Add  wo.Range("A1").CurrentRegion.Copy  wt.Range("A1").PasteSpecial Transpose:=True  For c = 1 To wt.Range("A1").CurrentRegion.Columns.Count  wt.Range("A1").CurrentRegion.Columns(c).RemoveDuplicates Columns:=1, Header:=xlNo  Next c  Set wr = Worksheets.Add  wt.Range("A1").CurrentRegion.Copy  wr.Range("A1").PasteSpecial Transpose:=True End Sub ファイルメニューから終了してエクセルに戻り, 元データのシートを開き エクセルのオプションから開発タブを表示しておいて,マクロのボタンから今登録したMacro1を実行する。 #こんな方法もあります。 シート1のA1から元データがあるとして。 シート2のA1に =IF(COUNTIF(Sheet1!$A1:A1,Sheet1!A1)=1,Sheet1!A1,NA()) と記入,シート1のデータのある範囲に満遍なくコピー貼り付ける Ctrl+Gを押し,現れたダイアログでセル選択をクリック,現れたダイアログで数式にマークしてエラー値のみチェックを残してその他のチェックを外し,OKする #N/Aのセルが飛び飛びで選択されるので,飛び飛びの選択状態を崩さないよう上手く1個の#N/Aのセルを右クリックして削除を選び,左に詰めてOKする。

msndance
質問者

お礼

いろんな裏ワザがあるのですね。ありがとうございます。

noname#204879
noname#204879
回答No.2

あいにく Excel 2010 を持っていないので、Excel 2002 での方法になります。 添付図参照 Sheet1: オリジナル・データ Sheet2!B1: =IF(ISERROR(SMALL(Sheet1!$A1:$G1,COLUMN(A1))),"",SMALL(Sheet1!$A1:$G1,COLUMN(A1)))     (A列は空白のまま) Sheet3!A1: =IF(Sheet2!B1=Sheet2!A1,"",Sheet2!B1) Sheet4!A1: =IF(ISERROR(SMALL(Sheet3!1:1,COLUMN(A1))),"",SMALL(Sheet3!1:1,COLUMN(A1)))

msndance
質問者

お礼

SMALLは見たことがなかったです。調べてみます。

関連するQ&A

  • Excel2003での行重複削除

     Excel2003で、列のセル内容が同一の場合を削除・抽出することは可能でしょうか。例えば、次のようなイメージです。 行番号 A列 B列 行1 A1県 B1市 行2 A1県 B2市 行3 A1県 B3市 行4 A1県 B4市 行5 A2県 B5市 行6 A2県 B6市  ここから、A列が同一の行の重複を削除したいのです。上記では、行1から行4までは「A1県」で同一なので、1つの行だけ残し後の行は削除したい。B列の内容は重複削除で一部消えますが構いません。上記の場合、抽出結果は次のようになります(先頭行だけ残した場合ですが)。 行番号 A列 B列 行1 A1県 B1市 行5 A2県 B5市  データベースが大きいため、手作業で削除して行くのは大変です。適当な方法がありましたら、是非、ご教示ください。  どうぞ宜しくお願いします。  

  • 【Excel VBA】重複行の削除

    はじめまして。 IDの重複を削除し、日付データを横1列にまとめるVBAについてご教示いただけますと幸いです。 ------------------------------------------------------- ▼シート1(データ入力がされているシート)    A   B   C   D   E   F    1   ID 日付 2  1234  1/1  1/6  1/10  1/20   3  1234  2/3  2/20 4  1234  3/2 5  7777  1/10  1/15  1/20 6  7777  2/2   2/12  2/22 7  9876  2/3 ⇓ マクロ起動後 ▼シート2(重複行を削除しまとめたシート)    A   B   C   D   E   F   G   H 1   ID 日付 2  1234  1/1  1/6  1/10  1/20  2/3  2/20  3/2 3  7777  1/10  1/15  1/20  2/2  2/12  2/22 4  9876  2/3 【補足】 列情報  ・A列…ID  ・B-F列…日付(左詰め) ※日付はIDごと月毎に行が変わるため、IDによって複数行存在する場合があります。 ※A列のIDは重複しない場合もあれば、4行以上ある場合があります。 ※シート1のデータはおおよそ1000-5000行です。 ※IDに対して、日付は5つあれば問題ありません。そのためG列以降の日付を削除しても支障はございません。 ------------------------------------------------------ VBAの知識があまりなく、調べて出てきたものをコピペ使用も試みたのですが、 上手く動かす事ができませんでした…。 お力添え頂けますと幸いです…。 Windows10でエクセル2016を使用しております。 何卒宜しくお願いいたします。

  • 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

  • 重複行を削除

    重複する行をVBAコードで削除したいのですが A列 B列 C列 あ  1  a あ  1  a あ  2  a い  1  a い  2  c い  2  c A列 B列 C列 あ  1  a あ  2  a い  1  a い  2  c のようにABC列同一文字は1行にしたいのですがVBAコード、関数の解る方ご教授願います。

  • VBAで重複していない行を削除したいです。

    初めてgoo質問を使います。 sheet1とsheet2の1列目と2列目で重複していない行を sheet2から削除したいです。 例えば、 Aの列に番号?、Bの列に数字 sheet1 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号C 1 5 番号C 2 6 番号F 6 7 番号F 7 8 番号F 8 9 番号F 9 10 番号F 10 sheet2 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号B 1 5 番号B 2 6 番号B 3 7 番号C 1 8 番号C 2 9 番号D 8 10 番号D 10 があったとして、上記を下記のようにしたいです。 sheet2 A B CDEF 1 番号A 1 2 番号A 2  3 番号A 3 4 番号C 1 5 番号C 2 6 番号F 6 7 番号F 7 8 番号F 8 9 番号F 9 10 番号F 10 CDEFの列にはsheet1とsheet2で違うデータが入っています。 sheet2から重複していない行を削除したいです。 宜しくお願いします。

  • 重複行の枠線内内容分のみを削除

    Excel2013ですがフォームがあり重複する行をExcel枠線を残しVBAコードでセル項目、数値のみ削除したいのですが A列 B列 C列 あ  1  a あ  1  a あ  2  a い  1  a い  2  c い  2  c A列 B列 C列 あ  1  a あ  2  a い  1  a い  2  c のようにABC列同一文字は1行にしExcel枠線を残すVBAコード、関数の解る方ご教授願います。 ActiveSheet.Range("$A$1:$C$6").RemoveDuplicates Columns:=Array(1, 2, 3), Header:=xlNo 上記の以前回答頂いたVBAコードで内容は問題なかったのですが枠線まで削除されるので改めて枠線を作っていますどうかよろしくお願いします。

  • Excel VBAで値が重複する行を削除する

    Excel2000を使っています。 シートAに数千件のデータがあります。 シートBのE列にある文字とシートAのD列の文字が重複する場合に、シートAの重複するセルがある行を削除する(且つできれば行のデータを抜き出すVBAを作ろうと考えています。 最近VBAの初心者本をやっと理解したところで、ちんぷんかんぷんとまではいかないけど、知恵熱がでました。 仕事なので自分でなんとかすべきかと思いますが、きっかけの調べ方がまずわからない。 どなたか、解かるきっかけだけでも与えて頂けないでしょうか。とくに、別シートの値と重複する値を探す場合に何をいれるかわかればきっと道は開けると思うんですが…。 初めての質問なので、質問内容が至らなかったらもうしわけありません。

  • ExcelでA列内で重複するレコードを削除

    A、B、C列にデータが入力されており、A列の店名が重複する場合、最初の1つを残して、他の重複するレコード(行全体)を削除する方法を教えてください。 A列で重複していても、B、C列で内容が違う可能性があります。 例えば、 A列:田中商店 B列:本町1-1-1 C列:0120-000-000 A列:田中商店 B列:本町1-1-11 C列:0120-000-001 この様にA列で田中商店が重複する場合、1番目の田中商店の行だけを残し、2番目以降は行全体を削除して上方向に詰めたいです。

  • 重複データの削除

    お世話になります。 現在、仕事でお客様のデータ(5万件くらい)を扱っています。 しかしデータをエクセルに取り込むシステムに難があり、同じお客様のデータを重複して取り込んでしまうことがあります。 そこで質問ですが、約5万件あるデータの中から効率よく重複データを削除する方法はありますか? 懸念事項は、同姓同名の方は削除してはいけないという点です。 データ項目は「名前」「住所」「生年月日」「性別」とあるので、 同姓同名でも生年月日や住所で判定することができます。 ちなみに私の考えは、 A列に名前、B列に生年月日とすると・・・ 1)ソート:優先順位はA列⇒B列 2)C列にIF(A1=A2,"重複","OK")として行方向へコピー   D列にIF(B1=B2,"重複","OK")として行方向へコピー   E列にIF(AND(IF(C1="重複",D1="重複")=TRUE,"重複","OK")として行方向へコピー 3)E列で"重複"でフィルタリングし、フィルタされた行の削除 スマートではないですが、私の知識では精一杯です。 何かスマートな方法はないものでしょうか? よろしくお願いいたします。

  • Excel(エクセル)で重複されたセルを削除し、またそのセルの行ごと削除するには?

    こんにちは。 添付された画像のように、A列には出身地がかかれてますが、 神奈川、群馬、ロシアについてはいくつもあります。 この時、神奈川、群馬、ロシアの行を重複しないよう1つの行にするため他の重複している行を削除し、 また削除する際、重複している行を比較し、年齢の高い方を消す方法はありますか? つまり画像のAから画像のBのようにしたいのですが、 何かスマートなやり方を教えて頂きたいです。 またこのデータは例ですので短い行ですが、実際は10000行以上にも続いている為、 できましたらそれを考慮した方法がございましたら、ありがたいです。 また当方Excel2003を主に使用し、Excel2007も持っています。 よろしくお願いいたします。

専門家に質問してみよう