解決済み

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

  • すぐに回答を!
  • 質問No.5371996
  • 閲覧数51
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 75% (3/4)

請求書内訳を作成しているんですが、
どの数式を使ったら、下記の操作ができるかがわからず、つまずいています。

■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へデータ(顧客名、契約金額)を抽出、表示することはできるのでしょうか?

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

  • 回答No.4

ベストアンサー率 42% (1835/4283)

シート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

お礼率 75% (3/4)

丁寧な説明をありがとうございました!!!!!!!!!
KURUMITOさんの数式で見事解決しました!!!

数式を考えあぐねて数時間平気で費やしていたので、
本当に助かりました。

ありがとうございました。
投稿日時 - 2009-10-17 14:40:40
感謝経済、優待交換9月20日スタート

その他の回答 (全3件)

  • 回答No.3

ベストアンサー率 54% (67/123)

>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

お礼率 75% (3/4)

ご丁寧な説明ありがとうございました。
VLOOKUPの説明、よく分かりました!!
IFを使わなくても、この関数でもできるんですね!
ありがとうございました!!!!
投稿日時 - 2009-10-17 14:52:15
  • 回答No.2

ベストアンサー率 79% (496/625)

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

お礼率 75% (3/4)

ご説明ありがとうございました!!
無事、解決しました!
投稿日時 - 2009-10-17 14:54:05
  • 回答No.1

ベストアンサー率 54% (67/123)

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

お礼率 75% (3/4)

>tag1701さん
早速のご回答ありがとうございます。

初心者なので、用語が曖昧なのですが、
検索値というのは、
「どこからデータを引っ張ってくるか」ということですか?

データ(検索値)は、Sheet2の顧客コード表にあります。
Sheet1へ顧客コードを入力したら、
Sheet2の顧客コード表にある顧客名と契約金額が、
Sheet1へ表示されるような仕組みを作りたいと思っています。
投稿日時 - 2009-10-16 20:38:41
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ