Excel関数 逆引き集 | 最小値の位置 → MATCH(MIN(範囲),範囲,0)

Excel
スポンサーリンク

概要

「最小値がどこにあるか(位置)」を求める定番式が MATCH(MIN(範囲), 範囲, 0) です。内側の MIN(範囲) で最小値を取り、その値が範囲の中の何番目かを MATCH(..., 範囲, 0) で特定します。返り値は「範囲内のインデックス(1始まり)」で、行番号や列番号に変換したり、INDEXで関連情報(商品名や日付など)を取り出すのに使えます。


基本の使い方

書式

=MATCH(MIN(範囲), 範囲, 0)
  • MIN(範囲): 範囲の最小値を取得
  • MATCH(検索値, 検索範囲, 0): 検索値が範囲の“何番目”かを完全一致で返す(1始まり)

最小例

=MATCH(MIN(B2:B20), B2:B20, 0)

B2:B20の中で最小値が「範囲の何番目か」を返します(B2が1、B3が2…)。


具体例

シート上の行番号に変換する

=ROW(B2) - 1 + MATCH(MIN(B2:B20), B2:B20, 0)

B2の行番号を基準に、見つかったインデックス分だけ足して「シート上の絶対行番号」を返します。

最小値の行にある別列の情報を取り出す(INDEXと組み合わせ)

=INDEX(A2:A20, MATCH(MIN(B2:B20), B2:B20, 0))

B列の最小値の行にあるA列の値(例: 商品名や顧客名)を取得します。

テーブル(構造化参照)で可読性を上げる

テーブル名「売上」、金額列「金額」、商品列「商品」

=INDEX(売上[商品], MATCH(MIN(売上[金額]), 売上[金額], 0))

最小金額の商品の名前を返します。


応用テンプレート

横方向(1行内)の“列位置”を求める

=MATCH(MIN(B2:F2), B2:F2, 0)

行2の中で最小値がある列の「インデックス」(左から1,2,3…)を返します。シート上の列番号にしたい場合は COLUMN(B2)-1+... のように加算します。

複数の最小値がある場合に“すべての位置”を列挙(Microsoft 365)

=FILTER(ROW(B2:B20), B2:B20=MIN(B2:B20))

最小値に一致する行番号の配列を返します。テーブルなら

=FILTER(売上[商品], 売上[金額]=MIN(売上[金額]))

で最小金額の商品を複数取得できます。

“最後の最小値”を取りたい(最後の一致)

XMATCHが使える環境なら最後の一致を指定できます。

=XMATCH(MIN(B2:B20), B2:B20, 0, -1)

-1は「最後の一致」を意味します。

最小値の位置から関連メトリクスをまとめて取得(INDEXと組み合わせた一括)

商品名・日付・担当者などを同じ行から取り出す例

=LET(
  pos, MATCH(MIN(売上[金額]), 売上[金額], 0),
  HSTACK(INDEX(売上[商品], pos), INDEX(売上[日付], pos), INDEX(売上[担当], pos))
)

Microsoft 365の動的配列で横並び出力します。


よくあるつまずきと対策

同率(同じ最小値)が複数ある

MATCHは最初に見つかった位置を返します。全件列挙したい場合はFILTERを使うか、古いExcelでは配列数式でIFとSMALLを組み合わせて複数位置を取り出します。

数値に見える文字列が混ざっている

MINはテキストを無視します。数値が文字列で保存されていると正しく比較できません。入力規則で数値化を徹底するか、別列で =VALUE(セル) を使って正規化してから参照します。

範囲の不一致で位置がずれる

MATCH(MIN(範囲), 範囲, 0) の「範囲」は内外で必ず一致させます。異なる範囲を混ぜると、返るインデックスが意図とズレます。

エラー値が混在している

エラー値が含まれるとMINやMATCHがエラーになります。計算用のクリーン列を用意し、IFERROR で保護するか、エラーを除去してから範囲を指定します。


例題

問題1: 列B(B2:B20)の最小値の“範囲内位置”をC2に表示

解答例:

=MATCH(MIN(B2:B20), B2:B20, 0)

問題2: 列Bの最小値の“行の商品名(A列)”をD2に表示

解答例:

=INDEX(A2:A20, MATCH(MIN(B2:B20), B2:B20, 0))

問題3: テーブル「売上」で最小金額の“レコードの顧客名(顧客列)”をH2に表示

解答例:

=INDEX(売上[顧客], MATCH(MIN(売上[金額]), 売上[金額], 0))

問題4: 行2(B2:F2)の中で最小値がある“列インデックス”をG2に表示

解答例:

=MATCH(MIN(B2:F2), B2:F2, 0)

問題5: 列Bの最小値が複数あるとき、その“すべての行番号”をI2から縦に出力(Microsoft 365)

解答例:

=FILTER(ROW(B2:B20), B2:B20=MIN(B2:B20))

まとめ

MATCH(MIN(範囲), 範囲, 0) は「最小値の位置」を最短で取得できる定番式です。位置が分かれば INDEX と組み合わせて関連情報の取り出しも自在です。複数最小値への対応や“最後の一致”は FILTERXMATCH が便利。範囲の整合、データ型の統一、エラー値の除去を意識すれば、実務で堅牢に使えます。

タイトルとURLをコピーしました