エクセルの最大値を条件付きで抽出する方法!名前や数値を自動表示する便利ワザ

売上表や成績表を見ていて、「東京支店だけの最大売上を出したい」「A商品の中で一番高い金額を知りたい」「最大値を出した人の名前まで自動表示したい」と思ったことはありませんか。フィルターで絞って目で探せばできなくはありませんが、件数が増えると確認漏れが起きます。

特に月次レポートや営業資料の提出前は、手作業で最大値を探すのがかなり危険です。ロロメディア編集部でも、広告レポートの数値確認で「最大値は合っているのに、担当者名が1行ズレていた」ということがありました。数値だけでなく、その数値に対応する名前や商品名まで自動で出せる形にしておくと、確認作業が一気に楽になります。

エクセルで条件付きの最大値を出すなら、基本はMAXIFS関数を使います。MAXIFS関数は、指定した条件に合うセルの中から最大値を返す関数です。Microsoft公式でも、MAXIFSは指定した条件セットに該当するセルの中から最大値を返す関数として説明されています。

この記事では、条件付きで最大値を出す方法から、最大値に対応する名前を自動表示する方法、同じ最大値が複数あるときの対処まで、実務でそのまま使える形で解説します。

目次

エクセルで条件付きの最大値を出すならMAXIFS関数を使う

エクセルで条件付きの最大値を出すならMAXIFS関数を使う

売上表を見ながら「全体の最大値ではなく、特定の担当者や支店だけの最大値を出したい」と思う場面は多いです。提出前の集計で、フィルターをかけたり外したりしながら探していると、条件を戻し忘れて別の数字を拾ってしまうことがあります。

条件付きで最大値を出すなら、まず使うべきなのはMAXIFS関数です。読み方は「マックスイフス」で、条件に合うデータの中から一番大きい数値を返します。

たとえば、B列に支店名、C列に売上が入っている表で、東京支店の最大売上を出したい場合は、次のように書きます。

=MAXIFS(C:C,B:B,"東京")

この式は、「C列の売上の中から、B列が東京になっている行だけを対象にして最大値を出す」という意味です。手作業で東京だけを探す必要がなくなります。

MAXIFS関数の基本形を押さえる

MAXIFS関数は、最初だけ少し構造が分かりにくいです。なぜなら、最大値を出したい範囲と、条件を見る範囲を別々に指定するからです。

基本形は次の通りです。

=MAXIFS(最大値を出す範囲, 条件を見る範囲, 条件)

たとえば、売上がC列、支店名がB列なら、最大値を出す範囲はC列です。条件を見る範囲はB列で、条件は「東京」になります。

ここでよくあるミスは、最大値を出す範囲と条件を見る範囲を逆にしてしまうことです。支店名の列から最大値は出せないので、数値が入っている列を最初に指定してください。

実務で使うなら列全体より表範囲を指定する

ネット上の例ではC:Cのように列全体を指定することがあります。急いでいるときは便利ですが、実務では表の範囲を指定したほうが安全です。

たとえば2行目から100行目までがデータなら、次のように書きます。

=MAXIFS(C2:C100,B2:B100,"東京")

列全体を指定すると、別のメモ欄や集計行まで拾うことがあります。提出資料でこれをやると、意図しない数値が最大値として出てしまうかもしれません。

ロロメディア編集部でも、広告運用レポートの表下に「目標値」や「参考値」を置いていたせいで、列全体指定の関数が余計な数字を拾ったことがあります。集計対象は、必ず表のデータ範囲に絞るのが安全です。

条件が1つの最大値を抽出する方法

条件が1つの最大値を抽出する方法

「東京支店の最大売上」「A商品の最高単価」「担当者が佐藤さんの最大受注額」のように、条件が1つだけならMAXIFSで簡単に出せます。ここを押さえるだけでも、日常の集計作業はかなり速くなります。

条件が1つのときは、まず表のどの列が条件なのかを見ます。次に、どの列の最大値を出すのかを決めます。この順番を間違えなければ、関数は迷いません。

支店別の最大売上を出す

たとえば、A列に日付、B列に支店名、C列に売上があるとします。東京支店の最大売上を出したいなら、次の式です。

=MAXIFS(C2:C100,B2:B100,"東京")

この式を使うと、B列が東京の行だけを見て、C列の最大値を返します。大阪支店に変えたい場合は、条件の「東京」を「大阪」に変えるだけです。

ただし、実務では条件を直接式に書かないほうが便利です。たとえばE2セルに「東京」と入力し、F2セルに最大売上を出すなら、次のようにします。

=MAXIFS(C2:C100,B2:B100,E2)

こうしておけば、E2の支店名を変えるだけで結果が切り替わります。支店ごとのレポートを作るときにかなり便利ですよ。

商品別の最大単価を出す

商品リストから「A商品の最高単価」を出したい場合も考え方は同じです。B列に商品名、D列に単価があるなら、次のように書きます。

=MAXIFS(D2:D100,B2:B100,"A商品")

商品名をセル参照にするなら、条件を入力するセルを用意します。

=MAXIFS(D2:D100,B2:B100,G2)

G2に商品名を入れれば、その商品だけの最大単価が表示されます。商品名を手入力すると表記ゆれが起きるので、実務ではプルダウンリストにしておくとさらに安全です。

条件に文字を使うときの注意点

条件に文字を使う場合、表記が完全一致していないと正しく集計されません。「東京」と「東京支店」は別の値として扱われます。

よくあるのが、半角スペースや全角スペースが混ざっているケースです。見た目では同じに見えても、エクセル上では違う文字列として扱われることがあります。

集計結果が思ったより小さいときは、条件に該当する行が正しく拾われていない可能性があります。条件列を確認し、表記が統一されているか見てください。

条件が複数ある最大値を抽出する方法

条件が複数ある最大値を抽出する方法

月次レポートで「東京支店かつA商品の最大売上」を出したい場面があります。1つの条件だけなら簡単ですが、複数条件になると手作業で探すのはかなり面倒です。

MAXIFS関数は、条件を複数指定できます。支店、商品、担当者、月などを組み合わせて、必要な最大値だけを抽出できます。

支店と商品を条件にして最大値を出す

たとえば、B列に支店名、C列に商品名、D列に売上があるとします。東京支店のA商品の最大売上を出すなら、次の式です。

=MAXIFS(D2:D100,B2:B100,"東京",C2:C100,"A商品")

この式は、「B列が東京で、C列がA商品である行の中から、D列の最大値を出す」という意味です。条件はペアで追加します。

条件をセル参照にすると、より実務向きになります。G2に支店名、H2に商品名を入力する形なら、次のように書けます。

=MAXIFS(D2:D100,B2:B100,G2,C2:C100,H2)

この形にしておけば、支店名や商品名を変えるだけで結果が更新されます。レポート用の集計表では、この作り方がかなり使いやすいです。

日付条件を入れて月別最大値を出す

「2026年5月だけの最大売上を出したい」というように、日付条件を入れたい場面もあります。日付は少し注意が必要です。

A列に日付、D列に売上があるとして、2026年5月1日以上、2026年6月1日未満を条件にすると、5月分だけを対象にできます。

=MAXIFS(D2:D100,A2:A100,">=2026/5/1",A2:A100,"<2026/6/1")

月末を「<=2026/5/31」にしてもよいのですが、時刻データが混ざると拾い漏れが起きることがあります。実務では、翌月1日未満で指定するほうが安全です。

セル参照にする場合は、G2に開始日、H2に終了日の翌日を入れて、次のようにします。

=MAXIFS(D2:D100,A2:A100,">="&G2,A2:A100,"<"&H2)

「&」は文字列とセルの値をつなぐために使います。条件式と日付セルを組み合わせるときに必要になります。

最大値に対応する名前を自動表示する方法

最大値に対応する名前を自動表示する方法

最大値だけ出ても、実務ではそれだけでは足りません。「一番売上が高いのは誰か」「最高点を取った人は誰か」「最大金額の案件名は何か」まで知りたいですよね。

ここで必要になるのが、最大値を探し、その最大値と同じ行にある名前を表示する仕組みです。Microsoft公式では、XLOOKUP関数は1つの列で検索語を探し、別の列の同じ行から結果を返せる関数として説明されています。

たとえば、B列に名前、C列に売上がある場合、最大売上を出した人の名前を表示するなら、XLOOKUPを使えます。

=XLOOKUP(MAX(C2:C100),C2:C100,B2:B100)

この式は、「C列の最大値を探し、その最大値がある行のB列の名前を返す」という意味です。

最大値と名前をセットで表示する

レポートでは、最大値と名前を別々のセルに出すと見やすくなります。たとえばE2に最大売上、F2に担当者名を表示する形です。

E2には次の式を入れます。

=MAX(C2:C100)

F2には次の式を入れます。

=XLOOKUP(E2,C2:C100,B2:B100)

こうすると、最大値が変われば担当者名も自動で変わります。毎月の営業成績表やランキング表で使うと、手作業の確認がかなり減ります。

ただし、同じ最大値が複数ある場合、XLOOKUPは基本的に最初に見つかった値を返します。同点があり得る表では、その点も考えておく必要があります。

条件付きの最大値に対応する名前を出す

「東京支店の中で最大売上の担当者名を出したい」という場合は、少し工夫が必要です。まずMAXIFSで東京支店の最大売上を出し、その最大値と条件に合う名前を探します。

B列に支店名、C列に担当者名、D列に売上があるとします。G2に支店名を入れて、最大売上は次の式で出せます。

=MAXIFS(D2:D100,B2:B100,G2)

次に、その最大売上を出した担当者名を出します。Microsoft 365やExcel 2021以降なら、FILTER関数を使うと分かりやすいです。FILTER関数は、指定した条件に基づいてデータ範囲を抽出する関数です。

=FILTER(C2:C100,(B2:B100=G2)*(D2:D100=MAXIFS(D2:D100,B2:B100,G2)))

この式は、「支店名がG2と一致し、売上がその支店の最大値と一致する行の担当者名を出す」という意味です。同点が複数あれば、複数の名前が表示されます。

同じ最大値が複数あるときに全員の名前を表示する方法

同じ最大値が複数あるときに全員の名前を表示する方法

営業成績やテスト結果では、最大値が複数人で同じになることがあります。たとえば、AさんとBさんが同じ100万円の売上だった場合、1人だけ表示されると不公平です。

提出前のランキング表でこれを見落とすと、あとから「同率1位が抜けています」と指摘されることがあります。最大値に対応する名前を出すときは、同点があるかどうかを必ず考えましょう。

FILTER関数で同率1位をまとめて出す

Microsoft 365やExcel 2021以降なら、FILTER関数で同じ最大値の人を全員表示できます。B列に名前、C列に売上がある場合は、次の式です。

=FILTER(B2:B100,C2:C100=MAX(C2:C100))

この式は、C列の売上が最大値と一致する行の名前をすべて表示します。1人なら1人、複数人なら複数行に自動で表示されます。

同率があり得る資料では、この方法が安全です。特に成績表や表彰対象者の抽出では、1人だけを返すXLOOKUPよりFILTERのほうが向いています。

条件付きで同率最大の名前を出す

支店別に同率最大の担当者を出したい場合は、条件を組み合わせます。B列に支店名、C列に担当者名、D列に売上、G2に支店名があるとします。

=FILTER(C2:C100,(B2:B100=G2)*(D2:D100=MAXIFS(D2:D100,B2:B100,G2)))

この式なら、指定した支店の中で最大売上を出した担当者を全員表示できます。複数人いれば縦に並んで表示されます。

ただし、FILTER関数は古いExcelでは使えない場合があります。Microsoft公式の適用先にも、FILTER関数はMicrosoft 365やExcel 2024、Excel 2021などが含まれています。 古い環境で関数が使えないときは、後述するINDEXとMATCHの方法を検討してください。

古いExcelで最大値に対応する名前を表示する方法

古いExcelで最大値に対応する名前を表示する方法

職場によっては、Excelのバージョンが古く、XLOOKUPやFILTERが使えないことがあります。関数を入力したのに「#NAME?」と表示されると焦りますよね。

その場合は、INDEX関数とMATCH関数を組み合わせます。少し昔から使われている定番の方法で、古いExcelでも対応しやすいのが特徴です。

INDEXとMATCHで最大値の名前を出す

B列に名前、C列に売上がある場合、最大売上の名前を表示する式は次の通りです。

=INDEX(B2:B100,MATCH(MAX(C2:C100),C2:C100,0))

INDEXは、指定した範囲の中から指定位置の値を取り出す関数です。MATCHは、探したい値が範囲の何番目にあるかを返す関数です。

この式では、まずMAXで最大値を出し、MATCHでその最大値がC列の何番目にあるかを調べます。そしてINDEXで、同じ位置にあるB列の名前を取り出しています。

条件付きで使う場合は作業列を作ると安全

古いExcelで条件付きの最大値に対応する名前を出す場合、無理に複雑な式を作るより、作業列を使うほうが実務では安全です。作業列とは、途中計算のために追加する列のことです。

たとえば、B列に支店名、C列に担当者名、D列に売上があり、東京支店だけを対象にしたいとします。E列に次の式を入れます。

=IF(B2="東京",D2,"")

これを下までコピーすると、東京支店の売上だけがE列に表示され、それ以外は空白になります。あとはE列の最大値を出します。

=MAX(E2:E100)

担当者名は次の式で取り出せます。

=INDEX(C2:C100,MATCH(MAX(E2:E100),E2:E100,0))

作業列は見た目が少し増えますが、式の意味が追いやすくなります。引き継ぎが必要な資料では、複雑な1本の式より、作業列を使ったほうがミスが少ないこともあります。

条件付き最大値を見つけて行全体を抽出する方法

条件付き最大値を見つけて行全体を抽出する方法

実務では、最大値と名前だけでなく、その行全体を確認したいことがあります。たとえば最大売上の案件について、担当者、商品、日付、金額、ステータスまでまとめて見たいケースです。

この場合は、FILTER関数を使うと便利です。最大値に一致する行だけを表から抽出できます。

最大値の行をそのまま表示する

A列に日付、B列に担当者、C列に商品、D列に売上があるとします。売上が最大の行全体を出したい場合は、次の式です。

=FILTER(A2:D100,D2:D100=MAX(D2:D100))

この式なら、最大売上の行がそのまま表示されます。同率最大が複数ある場合も、該当行が複数表示されます。

レポートの確認用シートにこの式を置いておくと、「最大値だけ合っているけれど、どの案件か分からない」という状態を避けられます。

条件付きで最大値の行を抽出する

東京支店だけを対象にして、最大売上の行全体を表示したい場合は、条件を追加します。B列が支店、D列が売上だとすると、次のように書けます。

=FILTER(A2:D100,(B2:B100="東京")*(D2:D100=MAXIFS(D2:D100,B2:B100,"東京")))

セル参照にするなら、G2に支店名を入れておきます。

=FILTER(A2:D100,(B2:B100=G2)*(D2:D100=MAXIFS(D2:D100,B2:B100,G2)))

この式は少し長いですが、考え方はシンプルです。まず支店がG2と一致する行に絞り、その中で最大売上と一致する行だけを表示しています。

最大値を自動で目立たせる条件付き書式の使い方

最大値を自動で目立たせる条件付き書式の使い方

最大値を別セルに表示するだけでなく、表の中で一番大きい値を色で目立たせたい場面もあります。会議資料や確認用シートでは、最大値が視覚的に分かると説明が楽になります。

条件付き書式を使えば、最大値のセルに自動で色を付けられます。数値が変わっても、最大値の場所が自動で切り替わります。

売上列の最大値に色を付ける

売上がD2:D100に入っている場合、この範囲を選択します。次に「ホーム」タブから「条件付き書式」を選び、「新しいルール」をクリックします。

「数式を使用して、書式設定するセルを決定」を選び、次の式を入れます。

=D2=MAX($D$2:$D$100)

この式は、各セルが売上列の最大値と同じかどうかを判定しています。最大値と一致するセルだけに、指定した色が付きます。

ポイントは、比較するセルのD2は相対参照のままにし、最大値を出す範囲は絶対参照にすることです。絶対参照とは、コピーしても範囲がずれないように固定する指定です。

条件付きで最大値に色を付ける

東京支店の最大売上だけを色付けしたい場合もあります。B列に支店名、D列に売上、G2に対象支店があるなら、D2:D100を選択して次の式を使います。

=AND($B2=$G$2,D2=MAXIFS($D$2:$D$100,$B$2:$B$100,$G$2))

この式は、「B列がG2の支店名と一致し、D列の値がその支店の最大値と一致する場合に色を付ける」という意味です。

最大値を目で確認したいだけなら、関数で別セルに出すより条件付き書式のほうが分かりやすい場面もあります。提出前チェックでは、数値表示と色付けを併用すると確認漏れが減ります。

MAXIFSでエラーや0になるときの原因と直し方

MAXIFSでエラーや0になるときの原因と直し方

MAXIFSを入れたのに、思った結果が出ないことがあります。特に多いのが、条件に合うはずなのに0になる、日付条件が効かない、文字列の数値が最大値として扱われないケースです。

関数が悪いのではなく、データの状態が原因になっていることが多いです。ここを見ずに式だけ直そうとすると、かなり時間を使います。

条件に一致するデータがないと0になる

MAXIFSは、条件に合う数値がないと0を返すことがあります。たとえば「東京」と指定しているのに、データでは「東京支店」と入力されている場合です。

この場合、式は間違っていなくても一致する行がありません。まず条件列を見て、指定した条件と完全に一致しているか確認してください。

表記ゆれが多い場合は、条件を統一するか、別列で分類用の項目を作ると安定します。実務では、集計用の列をきれいにしておくことが関数より大切です。

数値が文字列になっていると正しく集計できない

売上や点数が数値に見えても、実は文字列として保存されていることがあります。CSVから取り込んだデータで特に起きやすいです。

文字列の数値は、関数で正しく扱えない場合があります。セルの左上に緑の三角が出ていたり、数値が左寄せになっていたりする場合は注意してください。

直すには、対象列を選択して「数値に変換」するか、別列でVALUE関数を使います。

=VALUE(D2)

これで文字列の数字を数値に変換できます。集計前に数値形式を整えるだけで、MAXIFSの結果が正しくなることがあります。

日付が文字列だと条件が効かない

日付条件がうまくいかない場合、日付が文字列になっている可能性があります。見た目は「2026/5/1」でも、エクセルが日付として認識していないことがあります。

日付が正しく認識されているか確認するには、セルの表示形式や並べ替えを見ます。日付として扱われていれば、古い順や新しい順に正しく並びます。

文字列の場合は、DATEVALUE関数などで日付に変換できます。

=DATEVALUE(A2)

ただし、元データの形式によってはうまく変換できないこともあります。CSVや外部システムから取り込むデータは、最初に日付形式を確認する習慣をつけると安心です。

MAXIFSが使えないExcelで条件付き最大値を出す方法

MAXIFSが使えないExcelで条件付き最大値を出す方法

職場のExcelでMAXIFSを入れたら「#NAME?」と出ることがあります。これは、使っているExcelのバージョンがMAXIFSに対応していない可能性があります。

Microsoft公式のMAXIFS関数ページでは、適用先としてMicrosoft 365やExcel 2024、Excel 2021、Excel 2019などが案内されています。 古いExcelでは使えないことがあるため、代替方法を知っておくと安心です。

配列数式で条件付き最大値を出す

古いExcelでは、MAXとIFを組み合わせる方法があります。B列に支店名、C列に売上があるとして、東京支店の最大売上を出すなら次の式です。

=MAX(IF(B2:B100="東京",C2:C100))

古いExcelでは、この式を入力したあとにCtrl + Shift + Enterで確定する必要がある場合があります。通常のEnterでは正しく計算されないことがあるため注意してください。

Microsoft 365など新しいExcelでは、そのままEnterで動く場合があります。使っている環境によって挙動が違うため、社内で共有する資料ではバージョンに注意しましょう。

作業列を使うと古いExcelでも分かりやすい

関数が苦手な人に共有するなら、作業列を使う方法が一番分かりやすいです。B列が支店名、C列が売上なら、D列に東京支店だけの売上を表示します。

=IF(B2="東京",C2,"")

D列を下までコピーし、D列の最大値を出します。

=MAX(D2:D100)

この方法なら、何を集計しているかが目で見えます。複雑な式を1セルに詰め込むより、後から見た人が理解しやすくなります。

実務で使いやすい集計表の作り方

実務で使いやすい集計表の作り方

関数だけ覚えても、表の作り方が悪いと集計は不安定になります。最大値の抽出でミスが起きる原因の多くは、関数ではなく元データの作り方です。

たとえば、同じ列に売上とメモが混ざっていたり、支店名が「東京」「東京支店」「東京 支店」とバラバラだったりすると、関数は正しく動きません。

元データは1行1件で作る

最大値を正しく抽出するには、元データを1行1件で作ります。1行に複数の案件を入れたり、セル結合を使ったりすると、関数で扱いにくくなります。

理想は、次のような形です。

日付支店担当者商品売上
2026/5/1東京佐藤A商品120000
2026/5/2大阪鈴木B商品95000
2026/5/3東京田中A商品150000

このように、1行に1つの取引や記録が入っていると、MAXIFSやFILTERが使いやすくなります。見た目を整えるためのセル結合は、集計表では避けたほうが安全です。

条件列は表記を統一する

条件付き集計では、条件列の表記統一がとても重要です。支店名、商品名、担当者名が少しでも違うと、別の条件として扱われます。

実務では、入力規則を使ってプルダウンにするのがおすすめです。支店名や商品名を手入力させず、選択式にすれば表記ゆれを防げます。

提出前に関数を直すより、最初から表記ゆれが起きない表を作るほうが効率的です。集計作業を毎月行うなら、ここはかなり大きな差になります。

よく使う最大値抽出パターン早見表

よく使う最大値抽出パターン早見表

急いでいるときは、どの式を使えばいいのかすぐ知りたいですよね。ここでは、実務でよく使うパターンをまとめます。

やりたいこと使う式
全体の最大値を出す=MAX(C2:C100)
東京支店の最大値を出す=MAXIFS(C2:C100,B2:B100,”東京”)
条件セルを使って最大値を出す=MAXIFS(C2:C100,B2:B100,E2)
最大値の名前を出す=XLOOKUP(MAX(C2:C100),C2:C100,B2:B100)
最大値の人を全員出す=FILTER(B2:B100,C2:C100=MAX(C2:C100))
条件付き最大値の人を全員出す=FILTER(C2:C100,(B2:B100=G2)*(D2:D100=MAXIFS(D2:D100,B2:B100,G2)))
最大値の行全体を出す=FILTER(A2:D100,D2:D100=MAX(D2:D100))

この表の式は、列の位置に合わせて調整してください。名前、条件、数値がどの列にあるかを確認してから使うことが大切です。

特に「最大値に対応する名前」を出す式では、検索する列と返す列を間違えやすいです。数値列で最大値を探し、名前列から返す。この順番だけは必ず押さえてください。

まとめ

まとめ

エクセルで条件付きの最大値を抽出するなら、まずMAXIFS関数を使うのが基本です。支店別、商品別、担当者別、月別など、条件に合うデータだけを対象にして最大値を出せます。

最大値だけでなく、対応する名前や案件名を表示したい場合は、XLOOKUPやINDEXとMATCHを組み合わせます。Microsoft 365やExcel 2021以降を使っているなら、FILTER関数で同じ最大値の人を全員表示したり、最大値の行全体を抽出したりすることも可能です。

ただし、関数を入れる前に元データを確認してください。数値が文字列になっている、日付が日付として認識されていない、支店名や商品名に表記ゆれがある。このような状態では、正しい式を使っても結果がズレます。

実務で一番安全なのは、元データを1行1件で整え、条件列の表記を統一し、MAXIFSで最大値を出し、必要に応じてXLOOKUPやFILTERで名前や行全体を表示する流れです。

手作業で最大値を探すと、件数が増えた瞬間にミスが出ます。提出前のレポートや営業集計では、関数で自動化しておくほうが圧倒的に安全ですよ。

今週のベストバイ

おすすめ一覧

資料ダウンロード

弊社のサービスについて詳しく知りたい方はこちらより
サービスご紹介資料をダウンロードしてください