wakowell様の回答にありましたVLOOKUPを使ってサンプルを作ってみました。
すでにお持ちと思いますが、商品に関する情報をリストにしたエクセルの表(データベース)を用意します。
データベースには各種情報が記載されていると思いますが、納品書に転送するデータは商品名、単価、備考の三つとしました。
サンプルに使ったデータベースはつぎのとおりです。
お持ちのデータベースの項目の並びはサンプルとは違うと思います。そのときは、式を修正します。
-----B列--------C列----------D列--------E列
3--商品番号----商品名-------単 価------備 考
4----001-----いろはにほ-----5,900-----るをわかよ
5----002-----ろはにほへ-----7,800-----をわかよた
6----003-----はにほへと-------100-----わかよたれ
7----004-----にほへとち-----7,700-----かよたれそ
8----005-----ほへとちり-----6,600-----よたれそつ
9----006-----へとちりぬ-------700-----たれそつね
大切な条件としまして、VLOOKUP関数を使うためには、商品番号は昇順(上から1,2,3,4,51,52,101,102.....)に記述されていなければなりません。
サンプルに使った納品書はつぎのとおりです。
-------C列-------D列---------------H列----------------J列
20---商品番号---商品名-----数量----単価------金額------備考
21-----001----いろはにほ----10---\7,600----\76,000----るをわかよ
22
23-----003----はにほへと-----5-----\100-------\500----わかよたれ
24
25-----011----るをわかよ----10---\9,000----\90,000----ならむうゐ
納品書の「C21」に「001」と記入したとき「D21」に、データベースから商品番号「001」の行の商品名「いろはにほ」持ってくる式はつぎのとおりです
[D21]=IF($C21="","",VLOOKUP(納品書!$C21,データベース!$B$4:$E$42,2,1))
同様に「H21」に単価を、「J21」に備考を持ってくる式はそれぞれ、
[H21]=IF($C21="","",VLOOKUP(納品書!$C21,データベース!$B$4:$E$42,3,1))
[J21]=IF($C21="","",VLOOKUP(納品書!$C21,データベース!$B$4:$E$42,4,1))
となります。
IF($C21="","" は、商品番号の欄に何も記述されていないときは商品名の欄をブランクにするという意味です。これがないと、「0」が出てくることがあります。
セルの中にスペースが書き込まれていると、何も表示されないのでブランクと見分けがつきません。商品番号欄にはスペースや、表示されない文字(たとえば改行)を書き込まないでください。
$C21がブランクではないとき(数字でなければなりません。数字以外の文字が記述されているとエラーになります。)は、VLOOKUP関数により、データベースシートの$B$4~$E$42の範囲の先頭列「B列」を検索して$C21の値と同じ、001を見つけようとします。001はB4にありますので、検索はマッチします。...$B$4:$E$42,2,1)式の,2,は、先頭列「B」列を1として、そこから左へ2番目の列、すなわち、「C」列を指定していますので、同じ行の「C」列つまり「C4」に記述されている「いろはにほ」が検索結果として、納品書の「D21」に送られます。
単価と、備考を持ってくる式も同様です。
セルのアドレスに$がついたものがありますが、オートフィルをしたときにずれないようにするためです。
お礼
お礼が大変遅くなり申し訳ありませんでした。 体調をくずしたのと、そのせいで今までたまっていた目の前の仕事を片付けるのがせいいっぱいで。。 こんなに詳しく教えていただき見たときにそれだけで大変うれしさが。 今からやってみますが、まずはお礼をと思った次第です。(遅すぎですが) 頑張ってみます。ありがとうございました!