• ベストアンサー

エクセルの数式を教えてください。

請求書内訳を作成しているんですが、 どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。 ■Sheetの詳細 Sheetは2種類あります。 Sheet1:請求書内訳 (顧客名、契約金額、合計金額)*顧客へ送るもの。 Sheet2:顧客名のコード表 (顧客コード、顧客名、契約金額) ■したいこと 「顧客コードを入力すると、顧客名と契約金額が表示される仕組み」を作りたいのです。 VLOOKUPを使ってみたのですが… Sheet2のデータを参照し、Sheet1の顧客名欄に顧客名を表示することはできましたが、 Sheet1へのコードを入力により、Sheet1へデータ(顧客名)を表示させる(Sheet2より引き出す)ことができませんでした。 *Sheet1の顧客名欄で使用した式はこちらです。 =VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) 説明が分かりにくくて申し訳ありませんが、Sheet1へのコード入力のみで、 Sheet2からSheet1へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.4

シート1の顧客名を入力するセルに顧客コードを入力して顧客名を表示させることはできません。シート1のどこかのセルに顧客コードを入力して顧客名を表示させることはできます。それをうまく利用することです。 例えば顧客名をC3セルに表示させるとしてA1セルに顧客コードを入力することにします。顧客コードは請求書を印刷するときに見えないようにするために例えばフォントの色を白になるように設定しておくことでしょう。 そこでC3セルに顧客名を表示させるのですがC3セルには次の式を入力すればよいでしょう。 =IF(OR(A1="",COUNTIF(Sheet2!A4:A44,A1)=0),"",VLOOKUP(A1,Sheet2!A4:C44,2,FALSE)) これで、A1セルが空の場合やシート2に顧客コードが見当たら無いコードをA1セルに入力した場合には顧客名は表示されませんが、そうでなければC3セルに顧客名が表示されます。

chi0208
質問者

お礼

丁寧な説明をありがとうございました!!!!!!!!! KURUMITOさんの数式で見事解決しました!!! 数式を考えあぐねて数時間平気で費やしていたので、 本当に助かりました。 ありがとうございました。

その他の回答 (3)

  • tag1701
  • ベストアンサー率54% (67/123)
回答No.3

>chi0208さん こんばんは。 字足らずでごめんなさい。 検索値と述べたのはSheet2の顧客名欄の顧客コードのどれかが 記述されているもの(この場合はSheet1のA4セルとしました。最初の =VLOOKUPがSHeet2のA4だったので)をさしていたのです。 =VLOOKUP(Sheet1!A4,Sheet2!$A$4:$C$44,2,FALSE)は Sheet1のA4セルに入力した顧客コードを検索する為のキーワードとして Sheet2のA4セルからC44セルに書き込まれた顧客名簿のなかのA列に前述 のキーワードがあるか検索し、合致したらその行から2列目のセルの 値を表させる関数です。 ですので、最初に提示された関数だとSheet2のA4セルに番号を記載 しても生きてこないのです。 説明下手ですいません。理解できましたでしょうか。 一応イメージを添付しますね。

chi0208
質問者

お礼

ご丁寧な説明ありがとうございました。 VLOOKUPの説明、よく分かりました!! IFを使わなくても、この関数でもできるんですね! ありがとうございました!!!!

  • end-u
  • ベストアンサー率79% (496/625)
回答No.2

Sheet2が     A    B    C 3 顧客コード 顧客名 契約金額 4 ○○○○○ △△△ ×××× 5 ○○○○○ △△△ ×××× : こういうレイアウトの場合で、仮にSheet1のA1セルに顧客コードを入力するとして、               ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Sheet1の「顧客名」を表示させたいセルに =VLOOKUP(A1,Sheet2!$A$4:$C$44,2,FALSE) Sheet1の「契約金額」を表示させたいセルに =VLOOKUP(A1,Sheet2!$A$4:$C$44,3,FALSE) あるいは、経過的に作業用セルを使って、MATCH関数でまず行を求めます。 Sheet1のB1を作業用として =MATCH(A1,Sheet2!A:A,0) Sheet1の「顧客名」を表示させたいセルに =INDEX(Sheet2!B:B,B1) Sheet1の「契約金額」を表示させたいセルに =INDEX(Sheet2!C:C,B1) 顧客コードが合致しなかった場合にエラー表示させたくなければ =IF(ISNA(B1),"",INDEX(Sheet2!B:B,B1)) など。

chi0208
質問者

お礼

ご説明ありがとうございました!! 無事、解決しました!

  • tag1701
  • ベストアンサー率54% (67/123)
回答No.1

=VLOOKUP(Sheet2!A4,Sheet2!$A$4:$C$44,2,FALSE) ではなく =VLOOKUP(Sheet1!A4,Sheet2!$A$4:$C$44,2,FALSE) としてください。 検索値はsheet1!A4に入力されているものを選ぶということですよね?

chi0208
質問者

補足

>tag1701さん 早速のご回答ありがとうございます。 初心者なので、用語が曖昧なのですが、 検索値というのは、 「どこからデータを引っ張ってくるか」ということですか? データ(検索値)は、Sheet2の顧客コード表にあります。 Sheet1へ顧客コードを入力したら、 Sheet2の顧客コード表にある顧客名と契約金額が、 Sheet1へ表示されるような仕組みを作りたいと思っています。

関連するQ&A