Excelが「普通に使える」とは何か

LWP | Excelが「普通に使える」とは何か

図解1|表の意味を読めると、式が変わる

図1 商品Noで行、見出しで列を選ぶ元表と転記先の関係

一行が一つの商品、一列が一つの属性です。関数を選ぶ前に、表が何を表すかを確かめます。

解説1|「使える」を、表全体の設計から考える

ストーリー

コイ丸先輩とフナさんは、引き継ぎ用の商品一覧を点検しています。「VLOOKUPを使えます」という説明に、先輩は一つ問いを添えます。取得する項目や商品が増えたとき、どこを直すのでしょうか。フナさんは、数式の前に元表と転記先の見出しを並べます。

この記事では「Excelが普通に使える」を、表の構造に合う数式を作り、同じ規則を安全に展開できること、という一つの目安から考えます。職種や目的によって必要な力は違います。特定の関数を使えるかだけで、すべての人の能力を判定する基準ではありません。

入力例:商品シート B9:G14

行

B列

C列

D列

E列

F列

G列

9

商品No

商品名

単価

生産者

最低発注数量

納品可能時期

10

P001

りんご

120

青空農園

10

10月

11

P002

みかん

80

川辺農園

20

11月

12

P003

なし

150

山里農園

10

9月

13

P004

ぶどう

300

丘の農園

5

8月

14

P005

もも

200

日向農園

10

7月

これは学習用の入力例です。B列の商品Noは重複せず、一つの番号から一つの商品行を選べます。C列以降は、その商品の属性です。I9:N9へ同じ見出しを置き、I10:I14へ取得したい商品Noを並べる転記先を作ります。

I10がP003なら元表の12行目、J9が商品名なら元表のC列が対象です。行は商品No、列は見出しから選びます。この二つの対応が、今回の数式の土台です。

図解2|列番号も、見出しから求める

図2 元表の見出しをMATCHで検索し範囲内の列位置2や3を得る

「商品名なら2、単価なら3」という対応を、見出しと元表の関係から求めます。

解説2|MATCHが返すのは、範囲の中の位置

VLOOKUPの第3引数は、検索範囲の左端から数えた列位置です。B10:G14を検索範囲にすると、B列が1、C列が2、D列が3です。シート全体のB列の列番号2とは別の数え方です。

J10へ次の式を入れると、I10の商品Noに対応する商品名が返ります。

=VLOOKUP(I10,$B$10:$G$14,2,0)

最後の0は完全一致の指定です。商品NoはB列から探され、返す値は検索範囲の2列目、つまりC列の商品名です。単価を取り出すなら第3引数を3へ変えます。ただし、この指定を各列で人が変更すると、見出しとの対応を人が管理し続けることになります。

見出しから位置を求める式

=MATCH(J$9,$B$9:$G$9,0)

MATCHは、J9の見出しがB9:G9の何番目にあるかを返します。0を指定すると完全一致で探し、見出し範囲を昇順に並べる必要はありません。

転記先の見出し

検索する範囲

MATCHの戻り値

商品名

B9:G9

2

単価

B9:G9

3

生産者

B9:G9

4

最低発注数量

B9:G9

5

納品可能時期

B9:G9

6

見出しの検索範囲とデータの検索範囲は、ともにB列からG列です。先頭と列の並びが一致するため、MATCHの結果をVLOOKUPの列位置として使えます。見出しだけをC9:G9にすると商品名の位置が1になり、この対応が崩れます。

読むポイント

MATCHが返すのは商品名や単価の値ではありません。次の関数へ渡すための「位置」です。引数の中身を固定の数字から数式へ置き換えるときは、戻り値の意味まで合わせます。

図解3|戻り値を、次の関数の引数へ

図3 MATCHが返す2をVLOOKUPの第3引数へ渡しP003の商品名なしを得る

内側の関数が作る列位置を、外側の関数が使います。二つの関数を、受け渡す値でつなぎます。

解説3|内側の計算を具体的な値に置き換える

今回の完成形は、次の式です。商品シートのJ10へ入力します。

=VLOOKUP($I10,$B$10:$G$14,MATCH(J$9,$B$9:$G$9,0),0)

VLOOKUPが求める第3引数へ、MATCHの式をそのまま入れています。関数の中へ別の関数を入れる書き方を、入れ子、またはネストと呼びます。読むときは、内側の式が何を返すかを具体化すると理解しやすくなります。

I10=P003、J9=商品名の場合

読む順序

計算・受け渡し

意味

1

MATCH(J$9,$B$9:$G$9,0) → 2

商品名は見出し範囲の2番目

2

VLOOKUP($I10,$B$10:$G$14,2,0)

P003を探し、その行の2列目を返す

3

戻り値は「なし」

元表C12の商品名

同じP003でも、転記先の見出しを単価にすればMATCHの結果は3になり、VLOOKUPが返す値は150になります。商品を識別する軸と、取り出す属性を選ぶ軸を組み合わせています。

四つの引数の役割

部分

今回渡すもの

役割

第1引数

$I10

探したい商品No

第2引数

$B$10:$G$14

キーと属性を含む元表データ

第3引数

MATCHの結果

元表内で返す列の位置

第4引数

0

完全一致で検索

関数をたくさん並べることが目的ではありません。「別の処理が必要とする値を、どこから作るか」と考えます。MATCHは列位置を作る部品、VLOOKUPはキーと列位置から値を返す部品です。

読むポイント

内側の式だけを別の空きセルで確かめ、2や3が返ることを見る方法もあります。想定外の値が返ったとき、見出しの検索が違うのか、商品Noの検索が違うのかを分けて追えます。

図解4|左を見るなら、列を固定する

図4 $I10は右へコピーしてもI列を保ち下へコピーすると行番号が変わる

同じ行の左側にある商品Noを使います。列Iを固定し、行だけをコピー先に合わせます。

解説4|$I10は「同じ行の商品No」を表す

転記先では、I列に商品No、J列以降に取得する項目を置いています。J10からK10へ式をコピーしても、探す商品NoはI10のままです。J10からJ11へコピーしたときは、次の商品NoがあるI11を使います。

この動きを表す参照が$I10です。$は直後の要素を固定します。$I10では列Iの前にだけ$があるため、列は固定、行10は相対的に動きます。列と行の片方だけを固定する参照を複合参照と呼びます。

J10の式をコピーしたとき

コピー先

$I10の変化

検索する商品Noのセル

K10:右へ1列

$I10

I10

N10:右へ4列

$I10

I10

J11:下へ1行

$I11

I11

K11:右へ1列・下へ1行

$I11

I11

同じ行の値を見続けるには列を止め、別の行へ移るときは行を動かします。「左を見るなら列固定」は、この転記先の配置に合う覚え方です。どんな表でも左を見ればよい、という規則ではありません。

固定の仕方を比べる

J10で書いた参照

K11へコピーした結果

この例で起こること

I10

J11

検索値の列まで動いてしまう

$I$10

$I$10

次の行でも最初の商品を探す

$I10

$I11

同じ行のI列の商品Noを探す

読むポイント

$の数を増やせば安全になるわけではありません。必要な軸だけを固定します。式を右へ一度、下へ一度コピーし、検索値の参照先が意図どおりかを数式バーで確かめると、表全体へ広げる前にずれを見つけられます。

図解5|上の見出しと、動かない元表

図5 J$9は列に合わせて動き9行目を保ち元表二つの範囲は絶対参照で固定する

項目名は同じ列の上、検索範囲は同じ場所です。参照には、それぞれ違う動きが必要です。

解説5|二つの軸と、二つの固定範囲を組み合わせる

J9:N9には取得したい項目名があります。J10の式はJ9の商品名、K10の式はK9の単価を使います。一方、J11へコピーしても見出しはJ9です。この動きはJ$9で表せます。列Jは動き、行9を固定します。

見出しの参照が動く方向

コピー先

J$9の変化

読む見出し

K10

K$9

単価

L10

L$9

生産者

J11

J$9

商品名

K11

K$9

単価

検索値の$I10と、見出しのJ$9は、動く軸が逆です。前者は行に合わせて商品を変え、後者は列に合わせて項目を変えます。その交点の値をVLOOKUPで取り出します。

元表は列も行も固定する

参照:$B$10:$G$14

上は検索対象のデータ範囲です。実際の式では、この参照がVLOOKUPの第2引数に入ります。B10とG14の列・行をすべて固定するため、どこへコピーしても同じ元表を見ます。

参照:$B$9:$G$9

こちらはMATCHで探す見出し範囲です。データ範囲と同じB列からG列を使い、列位置の対応をそろえます。上の二つは参照部分を示したものです。完成式は解説3・6にあります。

部分

右へコピー

下へコピー

$I10:検索値

固定

行が動く

J$9:見出し

列が動く

固定

$B$10:$G$14:データ

固定

固定

$B$9:$G$9:見出し範囲

固定

固定

読むポイント

絶対参照が防ぐのはコピーによる移動です。元表の商品が15行目へ増えても、この固定範囲へ自動的に含まれるとは限りません。元表の拡張時は、検索範囲を別途見直す必要があります。

図解6|一つの式を、右にも下にも広げる

図6 J10の一つの式をJ10:N14へ展開し商品と取得項目を二方向へ切り替える

右方向は取得する項目、下方向は商品を変えます。各セルで同じ設計規則が働きます。

解説6|コピー前後を、値と参照の両方で確かめる

I10:I14へ、P003、P001、P005、P002、P004の順に商品Noを入れます。元表とは行順を変えて、同じ行番号の値を写しているだけではないことを確かめます。J9:N9の見出しは、商品名、単価、生産者、最低発注数量、納品可能時期です。

J10へ入力する式

=VLOOKUP($I10,$B$10:$G$14,MATCH(J$9,$B$9:$G$9,0),0)

まずJ10をN10まで右へコピーし、続いてJ10:N10を14行目まで下へコピーします。コピー先が同じ矩形なら、下へ広げてから右へ広げても、参照が動く規則は同じです。

代表セルの式

K10:右へ1列コピーした式

=VLOOKUP($I10,$B$10:$G$14,MATCH(K$9,$B$9:$G$9,0),0)

J11:下へ1行コピーした式

=VLOOKUP($I11,$B$10:$G$14,MATCH(J$9,$B$9:$G$9,0),0)

K11:右と下へ1ずつコピーした式

=VLOOKUP($I11,$B$10:$G$14,MATCH(K$9,$B$9:$G$9,0),0)

代表セルの期待結果

セル

商品No

取得項目

期待結果

J10

P003

商品名

なし

K10

P003

単価

150

J11

P001

商品名

りんご

K11

P001

単価

120

N14

P004

納品可能時期

8月

J10が正しいだけでは、全体が正しいとは限りません。右隣、下、右下、最後のセルを見ます。値が合うかに加えて、商品Noと見出しは動き、検索範囲は動いていないかを確認します。同じ構造へ同じ規則を適用できることが、この設計の価値です。

図解7|安全に広げるための前提を確かめる

図7 キーと見出しの一意性、範囲の対応、型と未一致を確認する検索設計の条件

コピーできる式でも、表の条件が崩れると期待した値を取り出せません。規則とデータを一緒に点検します。

解説7|数式が正しくても、意図まで自動判定されない

今回の式は、VLOOKUPの検索範囲の左端に商品Noがあることを前提にします。商品Noを含まない範囲や、商品Noより左の項目を返したい配置へ、そのまま移して使うことはできません。対象の構造に合わせて範囲や手段を選びます。

この例で確かめる条件

確認するもの

条件が崩れた例

結果・確認方法

商品No

P003が複数行ある

VLOOKUPは最初の一致を返す。どの行かを一意に決める

見出し

単価が二つある

MATCHは最初の位置を返す。見出しを区別する

見出しの文字

「単価」と「単価 」

余分な空白などを確認する

値の型

数値123と文字列の123

見た目だけでなく格納された型をそろえる

対象範囲

データB:G、見出しC:G

列位置がずれる。開始列と順序をそろえる

検索対象

存在しない商品No・見出し

#N/Aになる。どちらの検索で未一致かを分ける

今回の例は、商品Noと見出しに重複がない表で説明しています。実務で重複が正しいなら、商品Noだけでは一行を識別できない可能性があります。検索の目的やキーの作り方を先に決めます。

完全一致は、文字を常に一文字ずつ厳密比較するという意味ではありません。VLOOKUPとMATCHは英字の大文字・小文字を区別せず、文字列の検索値に含む「*」「?」はワイルドカードとして扱えます。今回の商品Noと見出しには、これらの記号を使っていません。

読むポイント

途中の小計行や結合セル、一つの商品が複数行へ分かれた表は、今回の検索用一覧としてそのまま扱いにくくなります。月別シートなどにも用途はありますが、横断して検索するなら対象のまとめ方を考えます。「一行一件・一列一項目」を、何を一件とするかと一緒に決めることが大切です。

図解8|Excel力は、構造と規則を再利用する力

図8 関数を知る段階から表構造と参照規則を組み合わせて再利用する考え方への発展

覚えるのは式の形だけではありません。キー、見出し、固定する軸、動かす軸を考える方法です。

解説8|一回だけ書く、という考え方を次へつなぐ

数式を別の表へ移すときは、キー、見出し、固定する軸、動かす軸を考え直します。I列・9行目・B10:G14という番地を暗記するより、各参照が担う役割を読むことが大切です。

自分の表へ置き換える四つの問い

問い

今回の答え

設計に反映する部分

何で一行を選ぶか

商品No

VLOOKUPの検索値と元表の先頭列

何で取得項目を選ぶか

見出し

MATCHの検索値と見出し範囲

コピーで何を動かすか

商品の行、取得する列

$I10、J$9

コピーで何を動かさないか

元表と見出し範囲

列・行を固定した絶対参照

関数を知る、組み合わせる、構造に合わせて設計し展開する。この連続性から、仕事に必要な設計を増やせます。

まとめ

同じ設計規則をコピーすれば、商品Noと見出しの選び方から各セルの意味を追えます。担当交代や修正の際にも、この対応を確認します。

現在のExcelでは、XLOOKUPやFILTER、動的配列などで一つの式から複数セルへ結果を返す方法も使えます。コピーとスピルは違う操作ですが、構造を利用して重複する処理を一つの規則へまとめる考え方はつながっています。

今回の仕掛け

コイ丸先輩の引き継ぎの視点と、フナさんの照合の視点を重ねました。数式の答えを出すことと、次の担当者がその規則を説明できることを、一つの表から考えています。

出典メモ

元ネタ:ほえほえ「Excelが『普通に使える』とは何か」。数式と中心主張をもとに、学習用の5商品データ、コピー結果と成立条件を補いました。

Copyright © 2026 LWP 山中 一弘

本資料は、出典を明記いただければ、商用・非商用を問わず、ご自由に複製・改変・再配布していただけます。なお、著作権表示は改変せず、そのまま記載してご利用くださいますようお願いいたします。