重複データを手っ取り早く除外する、大変に便利な技を紹介します。それが、「VLOOKUPを使った重複除外テクニック」です。本稿は『エク達』というウェブサイトに掲載した『VLOOKU関数Pを使い重複データを簡単に除外する』という記事(タイトルの誤植は原文ママ)を転載したものです。
エク達は、「エクセル評論家」でもある新宿会計士が、エクセルなどの「オフィス系の汎用ソフト」を使い、誰でも気軽に、かつ安価に、とても迅速かつ正確に仕事をこなす、ビジネスマンとしての基本テクニックを研究するサイトである。 |
ポイントは「実務」
当ウェブサイトは、「実務の世界におけるエクセルの達人技」を紹介することに主眼を置いている。
ポイントは、「実務」だ。
企業や役所の実務の現場では、「集計表や日報を作る」、「複数のデータを一気に集計する」、「膨大なデータから規則性を見出して加工する」など、さまざまな仕事をしなければならない。
重複データを除外したい!
ただ、こうした「実務の世界では当然に必要とされるスキル」は、意外と教科書には載っていないものである。そして、そのスキルのひとつが、「重複データの除外」である。
たとえば、ごく簡単な事例として、ある会社の「製品輸出先リスト」として、こんなデータがあったとしよう(図表1)。
図表1 架空の「製品輸出先リスト」
※相手国名、製品名、金額はいずれも架空のものである。
そして、このリストについて、「相手国別に集計しよう」と思った際、どうすればよいか。
A列には相手国名が入っているので、この相手国名を手掛かりに「SUMIF」関数を使えば良さそうにも見える(なお「SUMIF」関数については『条件付き集計で計算も楽々!SUMIFの基本を覚える』などもご参照頂きたい)。
しかし、ここで問題が生じる。
A列をもう一度じっくり眺めてみてほしい。国名欄では「アメリカ」が3回、「フランス」が2回、「ドイツ」が2回、それぞれ重複して登場している。このままで集計してしまうと、正確な図表ができない。
こうした問題を解消するには、どうすれば良いか。
教科書的には「ピボットテーブル」などを作り、相手国別・製品別に集計表を作る、などのテクニックが紹介されていることが多いが、ここではそこまでややこしいことをせず、「重複データを手っ取り早く除外するためのテクニック」について考えてみる。
手っ取り早いのはVLOOKUP関数
とっても簡単だ。「VOOKUP関数」を使えば良い。
VLOOKUPの具体的な書式は、次のとおり。
VLOOKUP(検索値, 範囲, 列番号, [検索方法] )
つまり、「検索値」に最初に一致する条件の値を「範囲」から選び、その範囲から「列番号」先のデータを引っ張って来なさい、という関数だ(※なお、[検索方法]には常に「0(ゼロ)」を入力することを強くお勧めする。検索条件に合致する値がない時には「#N/A」を返してくれるからだ)。
どうしてこのVLOOKUPが「重複データの除外」に使えるのか。
実際に使用してみよう。具体的には、D2セルに次の数式を入力する。
=VLOOKUP(A2,A3:A10,1,0)
これを入力する際のイメージが図表2、入力結果が図表3だ。
図表2 計算式の入力
図表3 計算結果
D2セルに「アメリカ」が表示されたことがわかる。これは、「A2セルに入力されたものと同じ内容のものがA3~A10の範囲内にあればその値を返せ」、という計算式であり、実際、A3~A10に「アメリカ」という内容が1つ以上含まれているため、「アメリカ」と表示されているのである。
次に、この数式をD3~D10にコピーしてみよう(図表4)。
図表4 コピーした結果
すると、「#N/A」(該当なし)というセルが5つ出て来た。具体的には、D3、D6、D8~D10の各セルだ。
じつは、このセルの行数(3行目、6行目、8行目、9行目、10行目)に相当するA列の値は、そこから下に存在しない、ということを意味している。
そして、「オートフィルタ」などの機能を使い「#N/A」のみを指定してやると、重複データを除外することができる、というわけだ(図表5)。
図表5 オートフィルタで「#N/A」を選択
あとは、このA列を選択してやり、別シートに値貼り付けしてやれば良い。
経験上、この方法は、データ数が10000個以下の場合に有効だ。是非、活用していただきたい。
(※ただし、著者自身の経験上、データ数が10000個を超える場合には、この方法を使うとめっぽう時間がかかってしまうので注意されたい。)
エク達は、「エクセル評論家」でもある新宿会計士が、エクセルなどの「オフィス系の汎用ソフト」を使い、誰でも気軽に、かつ安価に、とても迅速かつ正確に仕事をこなす、ビジネスマンとしての基本テクニックを研究するサイトである。 |
View Comments (3)
オートフィルタのテクニックの記事も欲しいです。
A列にオートフィルタかけてフィルタ条件に検索したい国家を設定するとその国だけが表示できて便利ですね。
集計はフィルタかけた状態でオートsumボタンを押せば集計結果が条件付き集計するので結構便利と思います。
サイト主様
いつも更新ありがとうございます。
いつも拝見させていただいておりますが初めてコメントさせていただきます。
並べ替えとフィルターの詳細設定から「重複するレコードは無視する」のチェックを付けて実行するほうが簡単なのでいつもそちらを使っております。
その結果からDSUM関数を使って相手国毎の金額集計したりはします。
関数もそれだけでは目的の処理ができない場合が多いので組み合わせたり、ない項目を作り出してといったことを考えて処理していますが、Excelの機能や関数も奥が深すぎて使いきれていないです。
機能が多すぎてお腹いっぱいです。
私はD2セルに「=COUNTIF($A$2:A2,A2)」を入れて、下にずるずるとドラッグコピーします。そうするとD2は「1」が返り、D7は「2」が返ります。1はA列に最初に現れた「アメリカ」を意味し、2は上から2番目の「アメリカ」、D8は「3」が返りますから、上から数えて3番めの「アメリカ」です。
あとはソートして1だけ残せば重複データが消えるというわけです。