
エクセルの便利な機能に、重複の削除があります。重複を削除したいデータを範囲選択した状態でにリボンの「データ」→「重複の削除」を行うことで、あっという間に重複した行を削除することができます。

この機能はボタン一つで重複を取り除くことが出来る便利な機能ではありますが、この「重複の削除」機能では次のようなことを行うことはできません。
- 複数の項目(複数の列)を条件に重複するデータを削除したい
- ただし、重複する項目の中で日付が一番新しいものは残したい
例えば、あるイベントに参加した人の名前・住所・参加日を一覧でExcel管理しているとします。運用としては次のように、新しいもの(新しく参加した情報)をリストの一番下にどんどん追加していきます。住所は変わる可能性があるので、名前と住所をセットで入力していきます。

このデータを活用する中で、参加者にお礼を出したいので
参加者毎に参加日が一番新しい住所の情報を取りたい
という場合、どうすればよいでしょうか?このような結果をとりたいとします。

先述の「重複の削除」では名前・住所・参加日で既に重複がない状態であるため、重複を消すことが出来ません。また、参加日で絞り込もうにも、人によって参加日が異なり最新のイベントには参加していないようなケースもあるため、単純にフィルターをかけることもできません。
さらに、上記の例は人別に見やすいように色をつけているのでなんとなく最新の参加日のデータが取れそうですが、参加者が膨大な場合、1つ1つ見つけるのは現実的ではなく非効率です。
一見このような抽出は難しそうに見えますが、Excel関数を用いれば比較的簡単に欲しい情報を抽出することが出来ます。
今回は先ほどのような事例のように、
ある項目を基準に、日付が最新(または一番古い)行を抽出したい
というような場合における、Excel関数を用いた方法についてご紹介します。数個のエクセル関数を使えば実現することが出来ますので、是非参考にしてください。
この記事の目次
日付が最新の行で絞り込むための考え方
まずは考え方を整理します。
欲しい情報は、最新の日付ですが、人によって最新の日付というのは変わります。そのため、名前をキーにして行のカウントを取れれば、あとは日付を並び替えすればうまくとれそうです。
よって、次の内容を得ることが出来れば、欲しいデータを抽出できたといえます。
特定の項目を条件に、日付が一番新しいものから連番を振る
ある項目を基準に日付が最新(または一番古い)行を抽出する手順
欲しい情報は整理できたので、次の手順で行っていきます。理解しやすいように次のようなデータで行っていきます。

日付順にデータを並び替える
上記のデータは参加日順に古いものから並んでいますが、少し見づらいのと、抽出するのに並びが悪いです。そこで、次のように名前昇順、参加日降順に並びを変えます。
一覧を選択した状態でリボンのデータ→並び替えをクリック、することで並び替えダイアログが出ますので、次のように
- 名前:昇順
- 参加日:降順
と設定してOKをクリックします。

並び替え後のデータは次のようになります。枠で囲った部分が、人毎の日付が一番最新のデータです。

ポイントは
日付を降順に並び替える
ということです。ここでは見やすいように名前も並び替えで指定していますが、名前は無くても問題ありません。
名前をキーに件数をカウントする
次に、名前をキーに一覧上の件数をカウントします。住所は参加日によって変わるためキーとして入れません。
この際に使用するのが、COUNTIF関数です。
COUNTIF関数は、指定された範囲に含まれるセルのうち、検索条件に一致するセルの個数を返す関数です。次のように、D列にCOUNTIF関数を設定します。列名は件数とします。

まず、D2セルに次の関数を設定します。
=COUNTIF($A$2:A2, A2)
この関数では、A2セル~A2セルまでの範囲で、A2セルの値(Aさん)が含まれる件数をカウントしています。よってD2には件数は1が表示されます。
D13セルがどうなっているかというと

=COUNTIF($A$2:A13, A13)
のようになっています。A2~A13セルまでの範囲で、A13セルの値(Cさん)が含まれる件数をカウントしているため、D13セルには3と表示されています。
COUNTIF関数を設定した際のここでのポイントは、第一引数の範囲選択部分の$A$2を絶対参照にすることです。
=COUNTIF($A$2:A13, A13)
行と列に$をつけることで絶対参照のセル指定としていますので、この関数が設定されているセルを別のセルにコピペしても、 $A$2部分は変わりません。
フィルタをかけて対象データを抽出する
あとは一覧に件数が1のもの

でフィルタをかけて抽出すれば、欲しいデータで絞り込みされます。
参加者(名前)毎に、日付(参加日)が一番最新の住所を絞り込めました。
まとめ
このように、一覧から特定の項目をキーにしてデータを抽出する場合、COUNTIF関数を用いることで実現することが出来ます。COUNTIF関数は使い方を覚えておくととても便利です。