- ベストアンサー
エクセルの数式について
エクセル2007にて、企業用の住所録を作成しています。 何百件かある住所録の中から、検索して一つの住所録をラベルシートを使って住所を印刷したいと考えています。調べた結果、ワードの差し込み印刷機能を使うと便利のようですが、使い勝手など総合的に判断した結果、この方法は諦めました。 そのため、エクセルで全てを作ろうとしましたが、壁にぶち当たってしまいましたので、アドバイスを頂けると幸いです。 現在、sheet1にデータベース(住所録)。sheet2にデータ抽出ページ。sheet3を印刷用のページ。にそれぞれ設定しています。(sheet2で抽出と印刷が出来ればベストでしたが、印刷時に選択した部分の印刷にしたくないので諦めました) 質問ですが、sheet2のデータの関数に関してです。宛て名が企業名のみの一行のものと、企業名・担当者名の二行のものがあります。データベースのシートにあらかじめ「御中・様」を宛先と共に入力しておくのも一つの方法だと思いますが、データを他でも共有できるよう「御中・様」の付け足しをsheet2で行いたいと考えています。 企業名に関しては、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&" 御中" の数式でうまくいきました。 C1…抽出するデータ(住所録)の番号 L1…抽出するデータ(住所録)のセルの位置 ただ、担当者に関しては、 すべての住所録において担当者までの記載がないため、上記と同じ式を用いると、当たり前ながら「様」のみが表示されてしまいます。 この「様」をデータ(住所録)がない場合は、表示しないようにするには、数式をどのように入力すればよいのでしょうか?IF関数を使ってみましたが、うまくできませんでした。 こちらが現在入力している、担当者名ようの数式です。 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L2) C1・L1のセルの意味は上記の企業名と同じ意味です。 ちなみに、ゼロ値のセルにゼロ表示するのチェックは外していますので、データがない場合は、空白になっています。 文章が長くなってしまいましたが、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
……あ。 すいません、間違えてますね。それも2度続けて。^^;;;; 逆でした。 × =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(B8=0,""," 御中") ○ =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(B8=0," 御中","") 【B8が0のとき" 御中"をつける】でした。 お手数おかけして申し訳ありません。陳謝します。
その他の回答 (3)
#2です。「余談」の件について。 【担当者名表示セル】というのは、 sheet2の担当者名を表示させるセル、つまり、 =IF(VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)="",0,VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)&" 様") が入力されているセルのことです。 sheet2のB8が担当者名を表示するセルであれば、 企業名を表示するセルの数式は、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(B8=0,""," 御中") となります。 担当者名を表示するセルの値は、 担当者データがある場合 ⇒ 担当者名に"様"を加えた文字列 担当者データがない場合 ⇒ (見た目表示されていなくてもセルの値としては)数値の0 ですから、 数式 IF(B8=0,""," 御中") の値は、 担当者データがある場合 ⇒ " 御中" 担当者データがない場合 ⇒ "" となり、 全体として、 担当者データがある場合 ⇒ 企業名に" 御中"を加えた文字列 担当者データがない場合 ⇒ 企業名単体 となります。 ご参考まで。
補足
二度目のご回答ありございます。 さっそく企業名を表示させるセル(確認ページ・B7)に =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(B8=0,""," 御中") 担当者名を表示させるセル(確認ページ・B8)に =IF(VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)="",0,VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)&" 様") を、それぞれ入力して試したところ、 企業名…あり 担当者…なし の場合 御中・様の両方表示されず 企業名…あり 担当者…なし の場合 御中・様の両方表示される という結果になりました。 私自身の限界を超えた数式になっているので、どこが悪いのかさっぱりわかりません。教えていただいた式を、そのままコピーしたのがまずかったのでしょうか?
●[ゼロ値のセルにゼロを表示する] がオフになっているという前提で。 数式だけで処理するならば、担当者名を表示するセルを =IF(VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)="",0,VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)&" 様") とすればご要望の通り動作します。 ※データベースシートの該当行に、担当者データがない場合は0を、 担当者データがある場合はその値に" 様"をつけた文字列を返す。 ----------------------------------------------------------------------- 別案として、数式ではなく表示形式を使う方法もあります。 担当者名を表示するセルについて、数式はそのまま =VLOOKUP(C1,データベース!$A$2:$AB$1001,L2) とし、セルの表示形式を、 0;;;@ "様" とすれば、0が返る(担当者データがない)場合は空白、 文字列が返る(担当者データがある)場合のみ"様"がつきます。 ----------------------------------------------------------------------- なお、余談ですが、企業名を表示するセルについて、 担当者名を表示するセルを参照して、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(【担当者名表示セル】=0,""," 御中") とすれば、担当者名が存在する場合には" 御中"はつきません。 以上ご参考まで。
補足
ご回答ありがとうございます。 最初に記入いただいた、「様」の表示に関してはうまくいきました。ありがとうございます。 もう一度質問する形になってしまいますが、余談とありました、 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L1)&IF(【担当者名表示セル】=0,""," 御中") …の数式の【当者名表示セル】は、どのシートのことを指すのでしょうか?データベースでしょうか?確認ページでしょうか? 試してみましたが、うまくいきませんでしたので、もう少し詳しく教えていただけると幸いです。 ちなみに、データベースのシートでは、F列の2~1001行に、 確認ページのシートには、B8のセルに それぞれ担当者名のセルになっています。
- Turbo415
- ベストアンサー率26% (2631/9774)
基本的にIFを使えばできますよ。 たとえば =IF(ISBLANK(VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)),"",VLOOKUP(C1,データベース!$A$2:$AB$1001,L2)) とかではだめでしょうか? ただし、L2番目のセルはブランクである必要があります。スペースやゼロではダメです。スペースが入っているときはDeleteキーで削除してみてください。 それと蛇足ですが、企業名だけのときは企業名+御中でいいですが、 担当者のフルネームがあるときは御中書かないで、担当者名の後ろに様をつけるだけが正式のはずですが。 ですから、○○株式会社 △△様が正式です。 ○○株式会社御中 △△様ではおかしいですよ。
補足
さっそくのご回答ありがとうございます。L2のセルはブランクではありませんので、ご提示いただいた方法では難しいですね。 L2のセルには、住所録のシートになっているデータベースのどこのデータを抽出するかの数値が入っています。 質問のところに こちらが現在入力している、担当者名ようの数式です。 =VLOOKUP(C1,データベース!$A$2:$AB$1001,L2) C1・L1のセルの意味は上記の企業名と同じ意味です。 …と記載しましたが、L1はL2の間違いでした。 それと蛇足とありましたが、情報ありがとうございます。はがきやダイレクトメールに貼るものではないので、あまり神経質になる必要もありませんが、使い方が難しいですね。 ただ、この条件を当てはめて数式を作成するとなると、かなり複雑になりそうで頭が痛いです。
お礼
ご回答ありがとうございます。 最後の部分が逆だったんですね。こちらの数式を当てはめたら、大丈夫でした。それにしてもエクセルは奥が深いですね。まだまだ勉強しないといけないです。 一日つきっきり?のご指導ありがとうございました。