VLOOKU関数Pを使い重複データを簡単に除外する

シートから重複データを手っ取り早く除外したいと思った際に、もどかしい思いをされたことはないだろうか。教科書などを読むと「ピボットテーブルを使え」と記載されていることもあるが、そんな面倒なことをする必要はない。それが「VLOOKUPを使った重複除外テクニック」だ。

ポイントは「実務」

当ウェブサイトは、「実務の世界におけるエクセルの達人技」を紹介することに主眼を置いている。

ポイントは、「実務」だ。

企業や役所の実務の現場では、「集計表や日報を作る」、「複数のデータを一気に集計する」、「膨大なデータから規則性を見出して加工する」など、さまざまな仕事をしなければならない。

重複データを除外したい!

ただ、こうした「実務の世界では当然に必要とされるスキル」は、意外と教科書には載っていないものである。そして、そのスキルのひとつが、「重複データの除外」である。

たとえば、ごく簡単な事例として、ある会社の「製品輸出先リスト」として、こんなデータがあったとしよう(図表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個を超える場合には、この方法を使うとめっぽう時間がかかってしまうので注意されたい。)