Googleスプレッドシート・XLOOKUP
別シートの商品情報をXLOOKUPで自動表示する方法
見積書や発注書を作るとき、商品マスターを見ながら単価や商品区分を毎回書き写していませんか。商品名を入力したら、別シートから区分と単価が表示されるように、XLOOKUP関数を使います。
商品名を入れると、区分と単価が自動で表示される
完成例では、見積入力のA列に商品名、B列に商品区分、C列に単価を表示しています。例えば「A4コピー用紙(500枚)」を入力すると、区分は「用紙」、単価は680円になります。
E列の金額は単価×数量で計算されます。練習シートにはその計算式を設定済みなので、今回はB列とC列に商品情報を出すところを試します。
「商品マスター」と「練習」の2つのタブを確認する
下の練習用シートをコピーしたら、画面下にある「商品マスター」タブを開きます。A列に商品名、B列に商品区分、C列に標準単価が登録されています。
続いて「練習」タブを開きます。A列には商品名、D列には数量が入力済み。B列の区分とC列の単価だけが空欄になっています。
B2にXLOOKUPを入れて、商品の区分を表示する
「練習」タブでB2(区分の最初の空欄)をクリックし、次の式を貼り付けてEnterキーを押します。
B2に入力:商品マスターから区分を取り出す
=IF(A2="","",XLOOKUP(A2,'商品マスター'!$A$2:$A$100,'商品マスター'!$B$2:$B$100,"未登録",0))A2の「A4コピー用紙(500枚)」を商品マスターで探します。見つかった行のB列に「用紙」と書かれているので、練習タブのB2にも「用紙」が表示されます。
式の中では、何をどこから探している?
- A2:探したい商品名
見積入力のA2に書かれた「A4コピー用紙(500枚)」を探します。
- '商品マスター'!$A$2:$A$100:商品名を探す場所
「商品マスター」タブのA2〜A100です。A列から同じ商品名を探します。
- '商品マスター'!$B$2:$B$100:取り出す情報の場所
同じ「商品マスター」タブのB2〜B100です。見つかった商品と同じ行の区分を取り出します。
後ろの "未登録" は見つからなかったときの表示、0 は商品名の完全一致で探す指定です。先頭の IF(A2="","",...) は、商品名が空欄なら結果も空欄にするために付けています。
C2に単価の式を入れ、下の行までコピーする
次にC2(単価の最初の空欄)を選び、こちらの式を貼り付けます。
C2に入力:商品マスターから単価を取り出す
=IF(A2="","",XLOOKUP(A2,'商品マスター'!$A$2:$A$100,'商品マスター'!$C$2:$C$100,"",0))さきほどとの違いは、取り出す列が商品マスターのC列(単価)になること。A2のコピー用紙ならC2に680が表示されます。商品が見つからないときは、単価を空欄にしています。
2つの式を5行分にコピーする
B2:C2を選択し、選択枠の右下にある小さな四角を6行目までドラッグします。難しければB2:C2をコピーして、B3:C6へ貼り付けても構いません。
すると5商品の区分と単価が表示され、E列の金額も埋まります。たとえばコピー用紙は単価680円×数量3で2,040円です。
$A$2:$A$100 などの $ は、下へコピーしても商品マスターの検索範囲を動かさないための記号です。一方、A2 に $ は付けません。3行目ではA3、4行目ではA4の商品名を探すためです。
自分の表で使うときに変える場所と、表示されないときの確認
自分の表では、①タブ名、②商品名を探す範囲、③表示したい情報がある範囲を変えてください。例えば単価がマスターのD列なら、C2の式の '商品マスター'!$C$2:$C$100 を実際のD列の範囲に変えます。探す範囲と取り出す範囲は、同じ行数にします。
- 「未登録」と出たら
- 商品マスターに同じ商品名があるか確認します。余分なスペースや全角・半角が違うと、見つからない場合があります。
- 単価だけ空欄なら
- C2の式と、商品マスターの単価がある列を確認します。今回の式は商品が見つからない場合にも空欄を表示します。
- 同じ商品名が何件もあるなら
- 同名の行が複数あると、意図しない単価を取り出すおそれがあります。商品マスターでは商品名を重複させないようにします。
ここで使うXLOOKUPは同じファイル内の別タブを参照します。別のスプレッドシートファイルを参照する方法とは異なります。
関数の仕様:Google公式ヘルプ「XLOOKUP 関数」