概要
「最小値がどこにあるか(位置)」を求める定番式が 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 と組み合わせて関連情報の取り出しも自在です。複数最小値への対応や“最後の一致”は FILTER や XMATCH が便利。範囲の整合、データ型の統一、エラー値の除去を意識すれば、実務で堅牢に使えます。
