重複したデータの削除でキレ散らかさないためのスプシ芸

#概要
仕事してて、重複したデータを削除しなければならない局面って結構あると思います。
時間もない、データ削除機能も信じられないそんな時に毎回「あーこれどうやってやるんだっけ」ってなってググる時間を減らすための記事です。

##前提
[前回](https://qiita.com/menstos2525/items/87387f33f4c66aaeeda1)同様、主にスプシ(Google Spreadsheet)を使ってピボットテーブルのやり方についてまとめます。
そして前回、
>スプシとExcelは、基本的な操作に大きな違いはありません。

と抜かしたばかりですが、重複データの操作については、仕様が大きく異なっており、スプシでしか使えない関数なども出てきます。
なので今回は、Excelで同じ技は使えないと思っていてください。

##定義
本記事における重複したデータをどうにかしたい時とは、こういう↓ユーザー情報とかを扱う時です（データはサンプルです[^1]）。
サイト登録やフォーム記入などは、間違えて2回送信するなどのユーザーが出てきやすく、
![スクリーンショット 2020-04-29 16.51.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/198dcd35-6d2e-16cd-ad8e-7bd63aa29541.png)
[^1]: サンプルデータは[こちら](https://www.becoolusers.com/excel/conditional-formatting-duplicate.html)のサイト様の練習ファイルから拝借したものです。

このようにデータが重複する場合が多々あります。
![スクリーンショット 2020-04-29 16.51.32のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/80e8f577-682f-8556-d6d0-2a6ebb7bb4ec.png)
この程度の数なら視認できるかもしれませんが、データの母数が大きくなればなるほど誤差も出やすくしんどいので、小技を使った方が楽です。
中の人がよく使うものをいくつか紹介していきます。
また、結局は**正確なデータを得る**という目的が遂げられることが大切なので、ここで紹介しない方法を使ってももちろん良いし、ご自身で「こっちの方が圧倒的に楽だろ」という方法をお持ちならそちらを採用してください。

#重複したデータを抽出する
##COUNTIF関数を実行する
選択範囲内にそのデータがいくつ存在するかをカウントします。
1と出れば、そのデータは範囲内に1つだけ = 重複していないことがわかります。
1以外の数字が出れば、範囲内にその数だけ同じデータが存在していることになります。
![スクリーンショット 2020-04-29 17.42.49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/1b73f4c1-56df-5033-3e87-0d360f719a1d.png)

```
=COUNTIF($A$2:$A$21,A2)
```
<font color=red>**※データの選択範囲に絶対参照をかけ忘れると、選択範囲がずれるので気を付ける**</font>

####余談
関数を複数のデータに対して一気に実行したい場合、
![スクリーンショット 2020-04-29 17.54.40.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/6122b6e9-f636-07f0-b51e-3db4396aabab.png)
この右下の青い四角形にカーソルを合わせてダブルクリックすると早いです。


#重複したデータを削除する
##UNIQUE関数を使う
UNIQUE関数とは、[^2]
>エクセルにはない関数なのですが、指定したセルの範囲について重複をカットし、文字どおりユニークなデータをリアルタイムで表示してくれる関数です。

[^2]: [横方向にも対応できる！ Googleスプレッドシートで重複を削除する一番簡単な方法](https://liginc.co.jp/409012#01)

というわけで、重複していたデータが削除され、ユニークなデータだけが残りまs…
![スクリーンショット 2020-04-29 18.44.17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/4152f8f2-c701-86c7-56c4-83998b796d93.png)

エッ？？？？？？
I列とJ列が残念な感じになってしまいました。**キレそう。**

![スクリーンショット 2020-04-29 18.44.17のコピー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/85deb647-e43a-5933-8ce5-ba51d3efbe59.png)

これは、

- 同じ生年月日のユーザーがいる
- 重複している上に住所の書式が違うユーザーがいる

ことが原因でした。
UNIQUE関数について書いて終了するつもりだったのに、こういう事案もあることを身をもって知ってしまった…。
![スクリーンショット 2020-04-29 16.51.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/92c6c2fc-e31f-91c0-5ea4-25d22f085b23.png)

C列とD列についてはUNIQUE関数では処理できないようなので、VLOOKUP関数を使っていきます。

##VLOOKUP関数を使う
![スクリーンショット 2020-04-29 19.08.50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/388931/7ff2445d-999a-b936-9bf1-78fe695db6a8.png)

```
=VLOOKUP(H2,$B$2:$D$21,2,0)
```
VLOOKUP関数は、選択範囲内のデータに検索をかけて、検索値に対応するデータを出力してくれるものです。
検索値は、出力する値の検索基準になる値です。
ここでは、フリガナ(H2)を検索値として置き、「フリガナの隣の列に入ってる情報を取得する」みたいなことをやっています。
検索値が1列目に当たるように範囲選択をし、選択した範囲の何列目のデータを取得したいのか記述します。選択範囲内だと誕生日は2列目になるので、2とします。最後の0は、完全一致を指定するものです。これを1にすると、類似のデータを取得します。
こうすれば、誕生日が同じでも、ユーザーに紐づいた誕生日が削除されることなく出力されます。

住所でも同様の作業を行います(選択範囲内だと住所は3列目になるので、3とする)。

#まとめ
いろんな関数を駆使してデータと仲良くやっていきたk