今回はエクセルの神髄のVBA100本ノック17本目の題材をVBAではなくボタン操作で行うということで重複削除をやってみたいと思います。
素材

社員データ(左)があります。
部コード・課コードの2フィールド(列)を対象に重複削除して部・課マスタを作成(右)します。
重複の削除
(表のいずれかのセルをアクティブにして)「データ」タブ→データツール:「重複の削除」にて重複削除します。


重複の削除ダイアログボックスで部コードと課コードにチェックを入れます。

重複削除できました。
メリット
直観的操作で列を跨ぐ重複削除ができる。
デメリット
元データが削除されるため、確実に重複削除されているかが確認しづらい。(元データを一旦コピー・保存しておくことをおすすめします)
バグが報告されているので、大量データの場合は注意が必要である。
フィルタの詳細設定
(表のいずれかのセルをアクティブにして)「データ」タブ→並べ替えとフィルター:「詳細設定」にて重複削除します。


- 指定した範囲・・元データとは別の場所に抽出結果を出力したい場合はこちらを選びます。
- リスト範囲・・重複削除したいフィールド(列)を選択します。※行タイトルも含めて選択することがポイント。
今回は「部コード」・「課コード」・「部名称」・「課名称」フィールド - 抽出範囲・・抽出結果を出力したいセルを選択します。※抽出先を指定した範囲にした場合
- 重複するレコードは無視する・・チェックします

メリット
抽出データの出力先を自由に選択できる。
列を跨ぐ重複削除が容易にできる。
デメリット
操作方法が少し複雑である。
ピボットテーブル
(表のいずれかのセルをアクティブにして)「挿入」タブ→テーブル:「ピボットテーブル」にて重複削除します。


- テーブル/範囲・・表の全てを選択します。
- 配置する場所・・新規ワークシートまたは既存ワークシートのいずれかを選択します。
- 場所・・ピボットテーブルを出力するセルを選択します。

重複削除したいフィールド(マスタを作成したいフィールド)をレイアウトセクション:行に入れます。
レイアウトの変更

ピボットテーブルツールの「デザイン」タブ→レポート:レポートのレイアウトにて任意の形式に変更できます。(重複削除する対象フィールドが少ない場合は「表形式で表示」で表として整列できますが、フィールドが複数ある場合は手動で整えます)
メリット
直観的操作で列を跨ぐ重複削除ができる。
デメリット
重複削除したマスタを表として整列させる場合は手動となる。
ピボットテーブルの起動・解除などの手数が多い。
COUNTIFS関数の活用
COUNTIFS関数は、選択した範囲の中から、すべての「検索条件」に一致するセルの個数を数える関数です。
関数名 | COUNTIFS関数 |
書式 | =COUNTIFS(範囲1、検索条件1、範囲2、検索条件2・・・) |
作業列

「キー結合」という作業列を準備します。作業列に「部コード」と「課コード」を&演算子で結合します。
関数

「チェック」列という作業列を準備して、COUNTIFS関数を入力します。
引数1(範囲):$H$4:H4を入力して、下にドラッグしていくことで範囲が拡張されます。
拡張される範囲の中で、検索条件がいくつあるかをカウントします。

フィルターを使って「1」を抽出して、コピペすればマスタを作成できます。
メリット
重複削除工程を視覚的に確認できる
デメリット
引数の設定方法が少し複雑
まとめ
重複削除についてまとめてみました。是非参考にしてみてください。
コメント