エクセルVBAマクロでシートのデータ重複チェックと削除する方法

 

エクセルの便利な機能の一つに、シートにあるデータ重複チェックがありますが、その効率的な利用にはVBAマクロの利用です。VBAマクロを活用してデータ重複チェックと削除で、あなたのスキル向上と業務効率化をサポートする情報をお届けします。

 

 

VBAマクロを使ったデータ重複チェックと削除|利用シーン

データ重複チェックと削除

シートにあるデータの重複をチェックし重複行を削除する。このエクセルVBAマクロで、データの重複チェックと削除が自動化されデータの整合性が保たれます。

このエクセルVBAマクロ処理をどこで使うのか?
初心者の人にはイメージがわかないかもしれませんが、業務効率向上のための処理を作成する前に、データをチェックしたり、データのどこかに問題があるときなどに利用するシーンがあります。

伝票件数はあっているが今日の売上が極端に少ないとき、担当者コードと取引区分で集約して、ありもしない返品や値引きがないかチェックする。

伝票入力にある摘要欄が、入力者によってまちまちで、長すぎたり、短すぎたり、入力しないといけないはずの返品時の元伝票Noがないなど、後から見てわからないと言われたとき、この重複処理で入力内容を集約して、現在の入力内容を調査、今後の入力ルールを決めるなどに利用できます。

 

日常業務でExcelを多用し、手動作業を減らしたいと考えている方へ
本サイト参考:Excel VBAで自動化するコードのベースを習得したい方におすすめの記事

 

VBAマクロを使ったデータ重複チェックと削除|サンプルコード

ブックの1番目のシートにあるデータから、A列とB列の値が同じ行を見つけ、その中で重複している行を削除します。最初の行は見出しとして扱い、削除対象には含めません。

 

Option Explicit

Sub RemoveDuplicates()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets(1)
    ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
End Sub

 

営業部から「作業時間がかかりすぎる」と相談された係長の佐藤さん。繰り返し作業を効率化するVBAの必要性を感じていましたが、「難しそう」と一歩を踏み出せずにいました。

実際、VBAを実際に使いこなせる人は5割以下。独学で進められる人は3割程度という調査結果もあり、不安が募るばかり。

そんな中、佐藤さんは「Excel VBAエキスパート資格」の学習を開始。初心者向けの基礎から実践的な応用まで体系的に学べる内容に助けられ、資格取得を目指すことでモチベーションを維持しながらスキルを習得しました。

今では営業部の課題を次々と解決し、職場で信頼される存在に成長した佐藤さん。「難しそう」と感じていた不安はいつしか自信に変わり、業務効率化が職場全体の活気を生むきっかけになりました。

Excel VBAで業務を変える佐藤さんの挑戦

基本的な文法やVBAの実践的な応用までを網羅的に学習できる方法は、ExcelVBAエキスパート資格の取得を目指すこと。学習を通して、より効率的に、着実に基礎を身につけることが可能です。資格取得すれば、スキルの証明にもなり、職場での評価アップにも繋がるため、勉強を進めるモチベーションにもなります。
本サイト参考:マクロ知識がないから「何から学べば良いのかわからない」という人におすすめの記事

 

VBAマクロを使ったデータ重複チェックと削除|サンプルコード解説

1. Sub RemoveDuplicates()
マクロの始まりを示します。RemoveDuplicatesという名前のマクロを定義しています。Subは「サブプロシージャ」の略で、マクロがここから始まることを意味します。

2. Dim ws As Worksheet
wsという名前の変数を作成しています。wsは「ワークシート(Worksheet)」の略です。この変数を使って、特定のシートを参照できるようにします。

3. Set ws = ThisWorkbook.Sheets(1)
ws変数に、現在このマクロが保存しているブックの最初のシート(Sheets(1))を指定しています。ThisWorkbookはこのマクロが保存されているブック全体を指し、Sheets(1)はそのブックの1番目のシートを指します。

4. ws.Range("A1").CurrentRegion.RemoveDuplicates Columns:=Array(1, 2), Header:=xlYes
この行が実際に重複を削除する部分です。

・ws.Range("A1").CurrentRegion
 ・wsは先ほど指定したシート(1番目のシート)を指しています。
 ・Range("A1")は、そのシートのA1セルを指します。
 ・CurrentRegionは、A1セルを含む「隣接するデータの範囲全体」を自動的に選択します。A1セルから上下左右に隣接するセルにデータがあれば、それらをすべて含む範囲が選択されます。

・.RemoveDuplicates
 ・このメソッド(命令)は、その選択範囲から重複している行を削除する機能です。

・Columns:=Array(1, 2)
 ・重複の基準とする列を指定します。ここでは、1列目(A列)と2列目(B列)を基準に重複を判定します。

・Header:=xlYes
 ・Headerは「ヘッダー行(見出し行)」があるかどうかを示します。xlYesは「ヘッダー行がありますよ」という意味なので、最初の行を見出し行として扱い、重複判定の対象にはしません。

このようにして、データの中で同じ情報が繰り返されている行を整理できます。

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。