Excelシート上の重複行を削除するマクロ
Q.商品リストなどをExcelで扱う際に、商品の種類だけを知りたいなどで、2行以上ある同じ商品のリストを1行にまとめることはVBAで可能でしょうか。
A.VBAを使えばとても簡単に実現可能です。
重複行の削除は、VBAのプログラムでひとつひとつ地道にリストを辿れば可能ですが、実はVBAに便利なコマンドがあります。
今回はそれを紹介します。
まずはシート上に以下のようなリストを作成して下さい。これは1日の商品の売り上げリストをイメージしました。
(A列) (B列)
番号 販売商品
1 A5ノート
2 鉛筆10本入り
3 A4ノート
4 A4ノート
5 クリアファイル
6 消えるボールペン
7 クリアファイル
8 A4ノート
さて、VBAの画面を開き、下記のコードを入力します。
Sub 重複データ削除
Range(“A1″).CurrentRegion.RemoveDuplicates Columns:=2, Header:=xlYes
End Sub
たったこれだけです。RangeオブジェクトでA1セルを含む表を指定し、そのRemoveDuplicatesメソッドで重複を除去します。
重複を判定する列は、2列目すなわちB列(販売商品)ですね。最後の Header:=xlYes は、1行目がヘッダー(「番号」「販売商品」)なので、データではないことを示しています。
プログラムが完成したら、「デバッグ」メニューの「VBAProjectのコンパイル」をして、エラーが出ないことを確認します。
シートの画面に戻り、「開発」リボン※の「マクロ」で、上記のプログラムの名称「重複データ削除」を実行すると、シート上にテキストファイルの内容が出力されます。
いろんな場面で使用できそうなコマンドですので是非覚えてみて下さい。
※「開発」リボンが見えない場合は、下記の記事を参考にしてください。
http://www.office-kaiketsu.com/excel%ef%bc%88%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab%ef%bc%89%e3%83%9e%e3%82%af%e3%83%ad%e3%83%bbvba/%e3%83%9e%e3%82%af%e3%83%ad%e9%96%8b%e7%99%ba%e3%82%bf%e3%83%96%e8%a1%a8%e7%a4%ba%ef%bd%9c%e3%82%a8%e3%82%af%e3%82%bb%e3%83%ab2007/