- ベストアンサー
Excel2010で行ごとの重複削除
- Excel2010で行ごとに重複削除をしたいと思っています。
- データタブに重複の削除があるのですが、列ごとにやるようなので、一度シート全体を行と列を入れ替えて別シートにコピーして、1列目から順に重複の削除を実行するのは大変です。
- 自動化する方法はありませんか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! 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
その他の回答 (2)
- keithin
- ベストアンサー率66% (5278/7941)
>列選択、重複の削除アイコンをクリックするのを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する。
お礼
いろんな裏ワザがあるのですね。ありがとうございます。
あいにく 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)))
お礼
SMALLは見たことがなかったです。調べてみます。
お礼
まさにそれです。ありがとうございます。これで作業が進みそうです。