※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。
2025年9月9日【ID:0】
【Excel】複数行1データの表から数式で検索&抽出
まず前提として、可能ならば1行1データの表に変換した方が良いです。
しかし、いろんな理由(入力しやすさ、見やすさなど)で、以下のような複数行1データの表で管理することがあります。

このような複数行1データの表から、特定の項目で検索して値を抽出する方法について、以下の表の「会員番号」で検索し、「氏名」を抽出する数式を例に解説していきます。

1. 法則性を見つける
理想の値を抽出するためには、まずは法則性を見つける必要があります。
以下の表の場合は、次のような法則性があります。
・「会員番号」の下のセルが「氏名」

そのため、該当する「会員番号」の行番号が分かれば、その1つ下の行番号の、同じ列のセルの値を抽出すれば良いです。

2. 対象の行番号を取得する
特定の値が入力されているセルの行番号を取得するには、MATCH関数が便利です。
MATCH関数を使った以下のような数式で、行番号を取得することができます。
=MATCH(F3,C:C,0)
// F3:検索値
// C:C:検索範囲
// 0:検索方法(完全一致)
// 指定した「検索範囲」の先頭から指定した「検索値」と完全一致する値の位置情報を返す

上記では、「C:C」と列全体を指定していますが、表の先頭からの相対的な行番号でも問題ないです。
表の先頭からの相対的な行番号を取得する場合、以下のような数式になります。
=MATCH(F3,C4:C21,0)

3. 指定した行番号のセルの値を取得する
次は、先ほど取得した行番号に1を加えた行番号の、同じ列のセルの値を抽出します。
指定した範囲の相対的な行番号のセルの値を抽出するには、INDEX関数が便利です。
先ほど抽出した行番号に1を加えた行番号に位置するセルの値を抽出する場合、以下のような数式になります。
=INDEX(C4:C21,G3+1)
// C4:C21:抽出対象となる範囲
// G3+1:指定した範囲から抽出する値の位置情報
// 指定した「抽出対象となる範囲」の先頭から指定した「位置情報」の位置にある値を返す

ちなみに、考え方によっては、MATCH関数で取得した行番号に1を加えなくても、相対的な範囲を1つ下に移動することでも抽出することができます。
=INDEX(C5:C21,G3)

ただ、前者の以下の数式の方が直感的に分かりやすく感じます。(好みに合わせてください)
=INDEX(C4:C21,G3+1)
最後に、MATCH関数の数式とINDEX関数の数式を、以下のように組み合わせることで完成です。
=INDEX(C4:C21,MATCH(F3,C4:C21,0)+1)

4. まとめ
今後の保守を考えると、データを管理する表は1行1データに揃えた方がよいです。
しかし、一時的な表や見やすさを重視した表で、集計する必要のない表の場合は、今回のような複数行1データの表で管理しても問題になることは少ないです。
そのような表形式を保ったまま、特定の値を検索&抽出する際は、今回のように法則性を見つけることが大切になります。
※法則性がない場合は、数式での抽出は困難です。
ぜひ試してみてください。
※IT予備メンバーに加入して連携すると、
一部の広告が非表示になります。



















































