同じ商品コードや取引先コードで何度も登録された表から、「一番新しい日付の行だけ」を取り出したい。重複削除だけでは日付の新旧を判断できず、並べ替えても手作業でのチェックが残ってしまいます。結論から言うと、MAXIFS関数で対象ごとの最新日付を求め、その日付とキーの2条件でSUMPRODUCT関数を使って対応する行の値を拾うことで、関数だけで完結させられます。この記事では具体例をもとに手順を解説します。
商品コードが重複した入出庫データの例
次のような入出庫記録があるとします。A列が商品コード、B列が日付、C列が数量です。同じ商品コードが複数回登場し、日付もばらばらに入力されています。
| A(商品コード) | B(日付) | C(数量) | |
|---|---|---|---|
| 2 | A-100 | 2026/6/1 | 10 |
| 3 | A-100 | 2026/7/10 | 15 |
| 4 | B-200 | 2026/6/15 | 8 |
| 5 | A-100 | 2026/8/20 | 12 |
| 6 | B-200 | 2026/7/1 | 5 |
手順1: MAXIFSで商品コードごとの最新日付を求める
まず、重複のない商品コードの一覧を用意します。すでにUNIQUE関数で重複を除いたリストを作る方法で扱ったUNIQUE関数を使えば、E2セルに次の数式を入れるだけで、A列から重複のない商品コードの一覧が自動で作れます。
=UNIQUE(A2:A6)
E列(商品コード)に一覧ができたら、F列に商品コードごとの最新日付を求めます。MAXIFS関数は「条件に合うセルの中から最大値を返す」関数で、AVERAGEIFSやSUMIFSと同じ書式で使えます。F2セルに次の数式を入力します。
=MAXIFS($B$2:$B$6,$A$2:$A$6,E2)
この数式は「A2:A6のうちE2(商品コード)と一致する行に絞り、その中でB2:B6(日付)の最大値を返す」という意味です。A-100の最新日付は2026/8/20、B-200の最新日付は2026/7/1になります。
手順2: SUMPRODUCTでキーと最新日付の両方が一致する行の値を取り出す
最新日付が分かったので、次はその日付のときの数量を取り出します。商品コード(E列)と日付(F列)の2つの条件が両方とも一致する行だけを合計するという考え方でSUMPRODUCT関数を使います。G2セルに次の数式を入力します。
=SUMPRODUCT(($A$2:$A$6=E2)*($B$2:$B$6=F2)*$C$2:$C$6)
A列(商品コード)がE2と一致し、かつB列(日付)がF2(さきほど求めた最新日付)と一致する行だけを1として扱い、そのC列(数量)を掛けて合計しています。該当する行は商品ごとにちょうど1行のはずなので、実質的に「その1行の数量」がそのまま返ってきます。INDEX関数とMATCH関数を2条件で組み合わせる方法(INDEXとMATCHを組み合わせて柔軟に検索する方法参照)でも同じことができますが、2条件のMATCHは配列数式(Ctrl+Shift+Enterでの確定)が必要になる場合があり、SUMPRODUCTのほうが通常の数式として入力するだけで済み、ミスが起きにくいためこちらを紹介しています。
| E(商品コード) | F(最新の日付) | G(そのときの数量) |
|---|---|---|
| A-100 | 2026/8/20 | 12 |
| B-200 | 2026/7/1 | 5 |
E2〜G3をそのまま下にコピーすれば、商品コードごとに最新日付とそのときの数量が一覧になります。
よくあるつまずきポイント
- 同じキー・同じ日付の行が複数ある場合: SUMPRODUCTは条件に合う行をすべて足し合わせるため、同じ商品コードで同じ日付の行が2つあると数量も2行分合計されてしまいます。日付だけでなく時刻まで記録する、または管理番号など一意に決まる列を条件に加えると安全です。
- 日付が文字列として入力されている: セルの日付が実際には文字列(左揃えで表示される)だと、MAXIFSが正しく最大値を判定できません。日付が数値として認識されているか(右揃えで表示されるか)を確認してください。日付が数字やシリアル値として崩れて見える場合の直し方は別記事で解説しています。
- UNIQUE関数が使えないバージョンのExcelの場合: UNIQUE関数はExcel 2021・Microsoft 365以降の関数です。それ以前のバージョンでは「データ」タブの「重複の削除」機能や、フィルターオプションの設定で重複のないキー一覧を別途作成してから、手順2以降を同じように進めてください。
まとめ
重複データから最新のものだけを抽出するには、MAXIFSでキーごとの最新日付を求め、SUMPRODUCTでキーと最新日付の2条件が一致する行の値を取り出す、という2段構えが関数だけで完結する近道です。日付を条件にした集計はSUMIFで日付範囲を指定して集計する方法でも扱っているので、あわせて確認してみてください。カンマ区切りの回答を集計したい場合はアンケートの複数回答(カンマ区切り)をCOUNTIFで集計する方法、部署などグループごとに順位を出したい場合はグループごとの順位付け(RANKIFの代用)をCOUNTIFSで行う方法も参考にしてください。





