• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルVBAで表の重複行の削除)

エクセルVBAで表の重複行の削除

このQ&Aのポイント
  • エクセルVBAを使用して、表の重複行を削除する方法について教えてください。
  • B2:AA32の範囲の表の全列のデータが重複している行を削除するためのコードを教えてください。
  • 列の指定を簡略化する方法はありますか?

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

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率65% (1632/2475)
回答No.1

ExcelVBAのRemoveDuplicatesの使い方を調べてみた https://www.excel-chunchun.com/entry/RemoveDuplicates こちらの真ん中あたりに '選択範囲のすべての列で重複するレコードを削除する というコードがありますが、どうでしょう。

emaxemax
質問者

お礼

ありがとうございます。 Sub OK0() With ActiveSheet.Range("$B$2:$AA$32") Dim i As Long Dim arr As Variant ReDim arr(0 To .Columns.Count - 1) For i = LBound(arr) To UBound(arr) arr(i) = i + 1 Next .RemoveDuplicates Columns:=CVar(arr), Header:=xlYes End With End Sub で目的を達成しました。 とても勉強になりました。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • EXCEL VBAの重複行削除について

    EXCEL2010を使用しています。 添付画像の「重複行削除 前」の表を、RemoveDuplicatesで下の様にコードを組んで A列で重複する行を見て重複する行を削除しています。 Public Sub 重複行削除()  With WorkSheets(1)   .Range(.Cells(1, 1), .Cells(8, 3)).RemoveDuplicates _      Columns:=1, Header:=xlYes  End With End Sub すると、日付の新しいデータが削除され、古いデータが残ってしまいます。 (添付画像の「重複行削除 後」) ReniveDuplicates Columns:=Array(1,3) とした場合は、すべてのデータが残ってしまいます。 添付画像の「欲しいデータ」の表の様に、 日付の新しいものを残すように重複行削除は出来ないでしょうか? 詳しい方、どうか教えてください。 よろしくお願いします。

  • マクロ 重複削除の選択範囲を全てにしたい

    K列全てを選択し、重複削除をする流れをマクロ記録で作成しました。 コードはA1セルからS7731セルまでですが、毎回データの量が変わってしまうので、S7731セルまでではなく、全てにしたいですが、どうすればよいのですか? 宜しくお願いします。 Sub 重複削除() Columns("K:K").Select ActiveSheet.Range("$A$1:$S$7731").RemoveDuplicates Columns:=11, Header:= _ xlYes End Sub

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

    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コードで内容は問題なかったのですが枠線まで削除されるので改めて枠線を作っていますどうかよろしくお願いします。

  • マクロBVAに関する質問です

    Sub Macro1() ' ' Macro1 Macro ' ' Range("テーブル1[番号]").Select ActiveSheet.Range("テーブル1[#すべて]").RemoveDuplicates Columns:=1, Header:=xlYes End Sub といった、マクロを作ったのですがActiveSheet.Range("テーブル1[#すべて]").RemoveDuplicates Columns:=1, Header:=xlYesのところでデバックになってしまいます。 なぜデバックとなるのか? また解決策を教えて下さい。宜しくお願い致します。(マクロ超初心者)

  • 重複した値を一つ残す VBA

    重複した値を一つだけ残していきたいです。 たとえば リンゴ リンゴ リンゴ とあれば2つリンゴが消えて欲しいです 今のところ重複した値を消す方法しかわからず詰まっています。 なにとぞよろしくおねがいします  Option Explicit Sub test() Dim i As Double Dim x As Double Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Range("T3", Range("T" & Rows.Count).End(xlUp)).Sort Key1:=Range("T3"), Order1:=xlAscending, Header:=xlYes For i = 3 To Cells(Rows.Count, 20).End(xlUp).Row Range(Cells(i, "T"), Cells(i, "T")).RemoveDuplicates Columns:=Array(1), Header:=xlYes Application.Calculate Next End Sub

  • エクセルまたはVBAで重複行を削除

    例えば、 A B 1 1 a 2 2 b 3 3 c 4 4 d 5 4 d 6 5 e 7 6 g 8 6 g といった表があるとします。 A列をキーに、昇順にされた一覧表です。 ここで番号が重複している行、この例では4行目と5行目、7行目と8行目がそうです。 こういった重複した行を検索して、行削除したいのですがどんな方法が可能でしょうか? 最終的にはVBAでのイベントになるでしょうが、それ以前にエクセルで前準備などしておくようなことは必要でしょうか? 表自体はかなり膨大な量のデータベースです。 よろしくお願いします。

  • 増減するデータの集計について

    Excel2013使用です。 「受注書」というシートのデータを集計し、「集計表」というシートに 書き出したいです。 【シート「受注書」】    C      D      E       F     G   1 商品名   色     数量    単価   備考 2 データ・・・・・・・・・・・・・・・ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 シート「受注書」のC~Fのデータをコピーし、 シート「集計表」のA~Dに貼り付け後、商品名を基準に重複を削除し、 各商品の合計数量をSUMIF関数で集計するようにしました。 テストデータでは上手く行ったのですが、「受注書」のデータは都度 増減があるため、データを増やして再度テストしたところ、増やした分の データが「集計表」の下部に残ってしまいます。 こんな感じ↓ 【シート「集計表」】    A      B      C      D     E 6 商品名   色     数量    単価   備考 7 *****    **     ***     ***    ** 8 ****     **     ***  ***    ** 12****     **     ***     ***    ** ←増やしたデータ コードは以下の通りです Sheets("受注書").Select Range("C2:G2").Select Range(Selection, Selection.End(xlDown)).Select Selection.Copy Sheets("集計表").Select Range("A7").Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Application.CutCopyMode = False ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes Range("C7").Select Range(Selection, Selection.End(xlDown)).Select Selection.ClearContents Range("C7").Select ActiveCell.FormulaR1C1 = "=SUMIF(受注書!C3:C5,集計表!RC1,受注書!C5)" Range("C7").Select Selection.AutoFill Destination:=Range("C7:C9"), Type:=xlFillValues Range("C7:C9").Select Range("A2").Select End Sub 試しに ActiveSheet.Range("$A$6:$E$25").RemoveDuplicates Columns:=1, Header:=xlYes の部分を ActiveSheet.Range("$A:$E").RemoveDuplicates Columns:=1, Header:=xlYes に変えてみたところ、下部の重複データは消えたのですが、集計結果が何故か A7以降にではなくA4以降に表示されてしまい、罫線も消えてしまいました。 更に、C列の数量に不要な0が表示されてしまいます。 こんな感じ↓   A      B      C      D     E 4 商品名   色     数量    単価   備考 5 *****    **     ***     ***    ** 6 ****     **     ***  ***    ** 7                0 8                 0 どこを直したら良いでしょうか?

  • Perlで重複行を削除したい

    あ b c d e e g あ b c d e e g い b c d e e g い c c d e e g 上記のようなCSVデータ(タブ区切り)が100行くらいあるのですが、1列目にある、あ、あ、い、いは無視して、2列目以降のデータのみで重複を比較して同じ行は削除したいのですがどのようにすればよいでしょうか? 下記コードを応用すれば分かりそうなのですが、自分で作ることができませんでした。 どなたか、教えていただけ無いでしょうか? 宜しくお願い致します。 open(OUT, "$file"); @array = <OUT>; close(OUT); my %count; @array = grep(!$count{$_}++, @array); print @array;

    • ベストアンサー
    • CGI
  • 重複行を削除

    重複する行を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コード、関数の解る方ご教授願います。

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

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

専門家に質問してみよう