1. ホーム
  2. ブログ
  3. XLOOKUP関数の使い方|品番から品名と単価を自動で出す

XLOOKUP関数の使い方|品番から品名と単価を自動で出す

この記事は 事務でよく使うExcel関数まとめ|目的から探せる一覧 の1本です。他の関数もまとめて見られます。

伝票や日報を作るとき、品番を見ながら品名と単価をマスタから探して手で打ち込んでいませんか。

この作業は XLOOKUP(エックスルックアップ) を使うと、品番を入れた瞬間に品名も単価も自動で出るようになります。打ち間違いも消えます。

この記事で作るもの

商品マスタがこうなっているとします。

A1
ABC
1品番品名単価
2S-100杉板 12mm1,200
3H-200檜柱 105角3,800
4G-300合板 9mm900
5K-400米松 平角2,400
マスタ
「マスタ」という別シートに置いておきます。

伝票シートで、品番を打っただけで残りが埋まる状態にします。

B2 =XLOOKUP($A2, マスタ!$A:$A, マスタ!$B:$B, "品番が見つかりません")
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,8002076,000
伝票
A2に品番を入れると、B2の品名とC2の単価が自動で出てきます。金額も自動です。

人が打つのは品番と数量だけになります。

XLOOKUPの形

=XLOOKUP(探す値, 探しに行く列, 取ってくる列, 見つからないときの表示)
  1. 探す値いま手元にある値。ここでは伝票のA2に入れた品番
  2. 探しに行く列マスタの中で、その値が並んでいる列。ここでは品番の列
  3. 取ってくる列欲しい値が並んでいる列。品名がほしければ品名の列
  4. 見つからないときの表示見つからなかったときに出す文字。省略できますが、必ず書いてください

日本語にすると、こうです。

A2の値を、マスタの品番列から探して、見つかった行の品名列を持ってくる。

覚えることはこれだけです。

STEP1:品名を出す

伝票のB2に、次の式を入れます。

B2 =XLOOKUP($A2, マスタ!$A:$A, マスタ!$B:$B, "品番が見つかりません")
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角 20 
伝票
品番 H-200 に対して、マスタの品名「檜柱 105角」が返ってきています。

まず1行だけで、手で打った値と一致することを確認してください。ここが合っていれば、あとはコピーするだけです。

!

$(ドル記号)の意味

$A2$ は「A列からは動かないでね」という意味です。
式を右にコピーしても、探す値が B2、C2 …とズレていかなくなります。

マスタ!$A:$A$ も同じで、コピーしても参照先の列がズレません。
$ の付け外しは、セルを選んで F4 キーを押すと切り替わります。
詳しくは 絶対参照($)の使い方 で扱います。

STEP2:単価も出す

B2の式をC2にコピーして、最後の「取ってくる列」だけを単価の列に変えます。

C2 =XLOOKUP($A2, マスタ!$A:$A, マスタ!$C:$C, "品番が見つかりません")
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,80020 
伝票
変えたのは マスタ!$B:$B → マスタ!$C:$C の1か所だけです。

XLOOKUPは「取ってくる列」を列そのもので指定します。マスタの途中に列が増えても、正しい列を見続けてくれます。ここがこの関数の一番の利点です。

STEP3:品番が空のときは何も出さない

このままだと、品番を入れていない行に「品番が見つかりません」が並んでしまいます。

A1
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,8002076,000
3 品番が見つかりません品番が見つかりません  
伝票
品番が空の行にも結果が出てしまい、印刷したときに見苦しくなります。

「A2が空なら空欄、そうでなければ探す」という形にします。

=IF($A2="", "", XLOOKUP($A2, マスタ!$A:$A, マスタ!$B:$B, "品番が見つかりません"))
  1. $A2=""A2が空かどうかを調べる
  2. ""空だったときに表示するもの(空欄)
  3. XLOOKUP(...)空でなかったときに実行する処理
B4 =IF($A2="", "", XLOOKUP($A2, マスタ!$A:$A, マスタ!$B:$B, "品番が見つかりません"))
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,8002076,000
3S-100杉板 12mm1,2005060,000
4     
伝票
品番が空の行は、品名も単価も空欄のままになりました。

長く見えますが、やっているのは「空なら何もしない」を足しただけです。
IF の詳しい使い方は IF関数の使い方 で扱います。

STEP4:金額も自動にする

単価が出たら、あとは掛け算するだけです。

A1 =IF(C2="", "", C2*D2)
ABCDE
1品番品名単価数量金額
2H-200檜柱 105角3,8002076,000
3S-100杉板 12mm1,2005060,000
伝票
単価の打ち間違いによる請求ミスは、この時点で起きなくなります。

つまずきやすいところ

×

#N/A と出る

マスタに無い品番を探しています。次を確認してください。

・品番に余分なスペースが入っている(S-100 S-100 は別物です)
・全角と半角が混ざっている(S-100S-100
・マスタ側が数値、伝票側が文字列になっている

XLOOKUPの4つ目に「品番が見つかりません」と書いておけば、
#N/A の代わりにその文字が出るので、原因に気づきやすくなります。

×

#NAME? と出る

XLOOKUPが使えないバージョンのExcelで開いています。
Excel 2019以前では XLOOKUP は使えません。

社内でExcelのバージョンが混在している場合、
XLOOKUPで作ったファイルを古いExcelで開くとこのエラーになります。
配布するファイルなら、先にバージョンを確認してください。

!

マスタを「テーブル」にしておくと、さらに壊れにくくなります

マスタの範囲を選んで Ctrl+T を押すとテーブルになります。
下に行を追加したときに範囲が自動で広がるので、式の範囲を直す必要がなくなります。

この記事では分かりやすさを優先して $A:$A と列全部を指定していますが、
慣れてきたらテーブルに切り替えてください。

作るときの順番

  1. マスタを別シートに分ける

    伝票と同じシートにマスタを置かないでください。行の挿入・並べ替えのたびに壊れます。

  2. マスタの1行目を見出しにして、2行目からデータを入れる

    途中に空行を入れない。結合セルも使わない。この2つを守るだけで事故がかなり減ります。

  3. B2に式を入れて、1行だけで確認する

    手で打った値と一致すればOKです。合わなければ、原因はほぼスペースか全半角です。

  4. C2にコピーして、取ってくる列だけ変える

    変えるのは1か所だけです。

  5. IFで囲んで、空の行に何も出ないようにする

    ここまでが実務で使う形です。

  6. 必要な行数分コピーする

    最後にまとめてコピーします。

いきなり全行に式を入れないでください。1行で合わせてからコピーする。この順番だと、ズレたときにどこが原因かすぐ分かります。

今日やってみること

いま手で転記している表を1つ選んでください。品番と品名、社員番号と氏名、コードと名称。「片方を見てもう片方を探している」作業ならどれでも当てはまります。

マスタになる表を別シートに切り出して、1行だけXLOOKUPを入れてみる。ここまでで、この関数が自社で使えるかどうかが分かります。

次に読むとよい記事

  • 古いExcel(2019以前)を使っている場合 → VLOOKUP関数の使い方とXLOOKUPとの違い
  • 行と列の両方を指定して取り出したい場合 → INDEXとMATCHの使い方(近日公開)
  • 条件に合う行をまとめて抜き出したい場合 → FILTER関数の使い方(近日公開)
  • 取ってきた数字を集計したい場合 → SUMIFS関数の使い方

「うちのマスタは項目がバラバラで、そもそも整理されていない」という段階のご相談もお受けしています。現状のヒアリングと課題整理は無料です。

#Excel#XLOOKUP#表引き

この記事について

SUPRAXは、林業・製造・運送の現場経験をもとに、中小企業の業務改善・AI活用・GISの支援を行っています。 記事の内容について「うちの場合はどうか」を聞きたい方は、無料相談をご利用ください。

無料で相談してみる

あわせて読みたい

記事一覧へ戻る