• 締切済み

Excelで作成している送付状に簡単に相手先の情報を呼び出す方法につい

Excelで作成している送付状に簡単に相手先の情報を呼び出す方法について教えてください。 社内で使える送付状をExcelで作ろうとしています。 VBAは使わずに、一般の機能で作成したいです。 宛名のセルで相手先の会社名や担当者名を選択したら 自動的に電話番号とFAX番号が表示されるようにしたいと思っています。 宛先は別シートで管理して、数式をいじらずに宛先や名前を 変更・追加できるようにしたいです。 お知恵をお貸し下さい。 よろしくお願いします。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.5

 回答番号:ANo.3,4です。  それから、御質問内容からは少し外れますが、Sheet2に重複したデータが入力される事を避けるために、以下の操作を行って、Sheet2の全セルに入力規則と条件付き書式を設定しておくのも良いかも知れません。  まず、Sheet3のH2セルに次の数式を入力して下さい。 =IF(AND($G2<>"",COUNTIF($G:$G,$G2)>1),ROW(),"")  次に、Sheet3のH2セルをコピーして、同じ列の3行目以下に、Sheet2でデータを入力する予定の行数を、上回るのに充分な行数になるまで貼り付けて下さい。  次に、Sheet2でデータを入力する全ての列を選択してから、以下の操作を行って下さい。 メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの「設定」タグをクリック   ↓ 「入力値の種類」欄をクリックして、現れた選択肢の中にある「ユーザー設定」をクリック   ↓ 「数式」欄をクリックしてから、「数式」欄に次の数式を入力 =COUNTIF(INDIRECT("Sheet3!H:H"),"="&ROW())=0   ↓ 「データの入力規則」ウィンドウの「エラーメッセージ」タグをクリック   ↓ 「スタイル」欄が「停止」となっている事を確認   ↓ 「タイトル」欄に 「データの重複」 と入力   ↓ 「エラーメッセージ」欄に 「同じ会社に所属している同じ名前の担当者のデータが既に入力されています」 と入力   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック   ↓ メニューの[書式]をクリック   ↓ 現れた選択肢の中にある[条件付き書式]をクリック   ↓ 現れた「条件付き書式の設定」ウィンドウの左端の欄をクリック   ↓ 現れた選択肢の中にある「数式が」をクリック   ↓ 「条件付き書式の設定」ウィンドウの右端の欄に次の数式を入力 =COUNTIF(INDIRECT("Sheet3!H:H"),"="&ROW())   ↓ 「条件付き書式の設定」ウィンドウの[書式]ボタンをクリック   ↓ 現れた「セルの書式設定」ウィンドウの[パターン]タグをクリック   ↓ 赤色の四角形をクリック   ↓ 「セルの書式設定」ウィンドウの[OK]ボタンをクリック   ↓ 「条件付き書式の設定」ウィンドウの[OK]ボタンをクリック  これで、同じ会社名で、且つ同じ担当者名のデータを、キーボード入力で入力しようとしても、エラーメッセージが表示されて、入力が拒否されます。  又、セルのコピー&ペーストでデータが重複する行が作成された場合には、重複したデータが存在する行のセルの色が赤くなりますから、重複データである事が判別出来る様になります。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.4

 回答番号:ANo.3の続きです。  次に、Sheet1のC2セルをコピーして、Sheet1のD2セルとE2セルに貼り付けて下さい。  次に、以下の操作を行って下さい。 Sheet1のA2セルを選択   ↓ メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた「データの入力規則」ウィンドウの「設定」タグをクリック   ↓ 「入力値の種類」欄をクリックして、現れた選択肢の中にある「リスト」をクリック   ↓ 「元の値」欄をクリックしてから、「元の値」欄に次の数式を入力する(数式中の"゜"は半濁点です) =INDIRECT("Sheet3!B1:B"&MATCH("゜",INDIRECT("Sheet3!B:B"),-1))   ↓ 「データの入力規則」ウィンドウの[OK]ボタンをクリック  次に、Sheet1のB2セルを選択してから、同様の操作を行って、「元の値」欄に次の数式を入力してから、「データの入力規則」ウィンドウの[OK]ボタンをクリックして下さい。 =IF($A2="","",INDIRECT("Sheet3!F"&VLOOKUP($A2,INDIRECT("Sheet3!B:D"),2,0)&":F"&VLOOKUP($A2,INDIRECT("Sheet3!B:D"),3,0)))  後は、Sheet2の2行目以下に、各項目毎のデータを入力しておき、Sheet1のA2セルとB2セルのドロップダウンリストを使用して、会社と担当者を指定すると、C2~E2に、住所、TEL番号、FAX番号が表示されます。  尚、Sheet2に関しては、項目名が1行目無かったり、項目名の「会社」と「担当者」を別の名称(例えば「会社名」)に変えたりしない限りは、レイアウトは自由で、セルや行、列のコピー、切り取り、貼り付け、挿入も自由です。  又、Sheet2の適当な列に新しい項目を設けてから、Sheet1のC列をコピーして、別の列に貼り付けて、コピー先の列の項目名を、Sheet2の新規項目名に書き換えれば、別のデータも表示させる事が出来ます。  それから、Sheet1のA2~E2の範囲をコピーして、3行目以下に張り付ければ、複数の担当者のデータを、同時に表示させる事も可能です。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 今仮にSheet2で宛先の管理を行い、Sheet3のA列~G列を作業列として使用し、Sheet1で宛先の入力と検索結果の表示を行うものとします。  まず、Sheet2の1行目のセルに、 会社 担当者 住所 TEL FAX 等の各項目名を、1つずつ入力して下さい。  この時、どの列に、どの項目名を入力されても構いませんし、後で別の列に移動されても構いませんが、必ず1行目に入力して下さい。  次に、Sheet3のA1セルに次の数式を入力して下さい。 =IF(COUNTIF(OFFSET(INDIRECT("Sheet2!A2:A"&ROWS($1:2)),,MATCH("会社",Sheet2!$1:$1,0)-1),INDIRECT("Sheet2!R"&ROWS($1:2)&"C"&MATCH("会社",Sheet2!$1:$1,0),0))=1,ROWS($1:2),"")  続いて、Sheet3のA1セルをコピーして、同じ列の2行目以下に、Sheet2でデータを入力する予定の行数を、上回るのに充分な行数になるまで貼り付けて下さい。  次に、Sheet3のB1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($A:$A),"",INDIRECT("Sheet2!R"&SMALL($A:$A,ROWS($1:1))&"C"&MATCH("会社",Sheet2!$1:$1,0),0))  次に、Sheet3のE1セルに次の数式を入力して下さい。 =IF(OR(INDIRECT("Sheet2!R"&ROWS($1:2)&"C"&MATCH("会社",Sheet2!$1:$1,0),0)="",INDIRECT("Sheet2!R"&ROWS($1:2)&"C"&MATCH("担当者",Sheet2!$1:$1,0),0)=""),"",MATCH(INDIRECT("Sheet2!R"&ROWS($1:2)&"C"&MATCH("会社",Sheet2!$1:$1,0),0),$B:$B,0)*100000+ROWS($1:2))  次に、Sheet3のC1セルに次の数式を入力して下さい。 =IF($B1="","",COUNTIF($E:$E,"<"&MATCH($B1,$B:$B,0)*100000)+1)  次に、Sheet3のD1セルに次の数式を入力して下さい。 =IF($B1="","",COUNTIF($E:$E,"<"&(MATCH($B1,$B:$B,0)+1)*100000))  次に、Sheet3のB1~D1の範囲をコピーして、同じ列の2行目以下に、リストに入力予定の会社の数を、上回るのに充分な行数になるまで貼り付けて下さい。  次に、Sheet3のF1セルに次の数式を入力して下さい。 =IF(ROWS($1:1)>COUNT($E:$E),"",INDIRECT("Sheet2!R"&MOD(SMALL($E:$E,ROWS($1:1)),100000)&"C"&MATCH("担当者",Sheet2!$1:$1,0),0))  次に、Sheet3のG2セルに次の数式を入力して下さい。 =INDIRECT("Sheet2!R"&ROWS($1:1)&"C"&MATCH("会社",Sheet2!$1:$1,0),0)&INDIRECT("Sheet2!R"&ROWS($1:1)&"C"&MATCH("担当者",Sheet2!$1:$1,0),0)  次に、Sheet3のE1~G1の範囲をコピーして、同じ列の2行目以下に、Sheet2でデータを入力する予定の行数を、上回るのに充分な行数になるまで貼り付けて下さい。  次に、Sheet1の A1セルに  会社 B1セルに  担当者 C1セルに  住所 D1セルに  TEL E1セルに  FAX と入力して下さい。  次に、Sheet1のC2セルに次の数式を入力して下さい。 =IF(OR($A2="",$B2=""),"",IF(COUNTIF(Sheet3!$G:$G,$A2&$B2)=0,"該当無し",INDIRECT("Sheet2!R"&MATCH($A2&$B2,Sheet3!$G:$G,0)&"C"&MATCH(C$1,Sheet2!$1:$1,0),0)&"")) ※Sheet2における編集を自由に行える様にするために、内容が複雑になり、入力可能な文字数を超えるため、規約違反になりますが、続きは次の回答に記させて頂きます。

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

回答に色々制約をかけると、かえってむつかしくなったり、出来なかったりする。 エクセルをもっと勉強して「出来るか出来ないか」自分で判断できるようになること。 >数式をいじらずに宛先や名前を変更・追加できるようにしたいです 今回はそれが必要ないが、式の複写・最大行の増加などはやらざるをえないことが多い。 ーー VLOOKUP関数をつかえば出来る。この関数を知らないということは、エクセル(の関数)を系統的に勉強してない証拠。ある本にエクセルを勉強したかどうか、この関数で判別すると、書いた記事があった。私もそう思う。丸投げして、回答者に頼らず、WEBでも照会すること。 ーー Sheet2に A-C列に 氏名 住所 電話番号 山田 目黒区 03-2345-6789 ・・・ 以下データを作っておく Sheet1に 氏名(B3セルとする) 住所 電話番号 の見出しを作っておく(必ずしも作らなくて良いが)。下記式を入れるセル(場所)は、送付状のレイアウトに従ってセルを決める。 B4に氏名の山田を入れる。 C4には =VLOOKUP($C$3,Sheet2!$A$1:$D$10,2,FALSE)の式を入れる。 C5には =VLOOKUP($C$3,Sheet2!$A$1:$D$10,3,FALSE)のしきを入れる。 10行以内の例、3項目の例ですが、適当に増やしてください。 Googleで{エクセル VLLOKUP関数」で勉強し、補強してください。VLOOKUPの記事、エクセル関数の記事は腐るほどある。 ーー 上野2つの式の違いは第3引数の2,3です。これは氏名列から2列目、3列目にあるから。 $はこの場合はつけておくこと。 ーー 普通はワードの差込印刷の機能を作ったりする。 少し仕事関連のことに使おうとするとVBAが必要になるというのが持論です。 普通は顧客番号など、あいまいさをなくしたデータを指定する(同姓同名などあれば上記は破綻する) それも考えておくこと。 送付状を作成は、印刷すると言うことだろうが、この点の省力化をするには、絶対VBAが必要です。 >VBAは使わずに、一般の機能で作成したいです なんて、勉強したくない、といっているようなもの。

noname#164823
noname#164823
回答No.1

別シートに一覧表を作成し、1レコードごとにナンバー(連番)を振り、 そのナンバーを入力したら、該当の会社名などが出るようにVLOOKUP関数を使います。 方法は下に貼ります。他にもこの関数名で検索すれば、沢山出てきます。 http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu/vlookup2.htm

関連するQ&A

  • Word2003での宛名ラベル作成方法について

    エクセルでデータ(郵便番号、住所、名前など)を持っているところに郵便を送りたいので、宛名ラベルを作成しようと思ってますが、うまくいきません。 1枚のシートに18箇所分印刷できるのですが、一番左端上にしか出なかったり、18箇所印字されたと思ったら、2シート目3シート目とは左上のあて先がずれてるだけでどのシートもほとんど同じあて先だったり・・・(うまく表現できませんが) どうやったらうまくできるのでしょうか・・・教えてください。

  • excelで名簿作成#REF!表示されます??

    最近PCを始めたばかりのexcel初心者です。 100名程の名簿を作成しています。 こちらのサイトを参考にしながら四苦八苦して作成しましたが、1名退会したため支所名簿:退会者のセル行を削除したところ不具合が出たので躓いています;  先ず・・ 2枚のsheetを使用して支所名簿から宛名にリンク? *支所名簿のsheetの一覧表には“名簿”と名前をつけています。 sheet名【支所名簿】には A1  B1  C1  名前 〒  住所 sheet名【宛名ラベル】 A1 A2  A3 〒 住所 名前 支所名簿の名前のセルさえ指定すれば 〒・住所は表示されるように作成しました。 数式は・・ A1に『=IF(COUNTIF(名簿,A3),VLOOKUP(A3,名簿,1,FALSE),"") A2に『=IF(COUNTIF(名簿,C1),VLOOKUP(C1,名簿,2,FALSE),"") A3に『=支所名簿'!A1』 退会した人(セル:A1)を消すために、支所名簿A1の行を削除すると【宛名ラベル】のC1に#REF!となります。 支所名簿のsheetで退会者を削除すると宛名ラベルのSheet も順送り(エラーのラベルが出ない)に出来る方法はないのでしょうか? (市販の宛名ラベルでの作成は使用できないので、excelで作成です) また、別の方法でも有れば ご伝授頂きたく宜しくお願いいたします。

  • エクセルで仕入帳を作成

    エクセルの初心者です。 現在、MS Office2007のexcelで仕入帳の作成をしています。 各シートごとに仕入先の商品のやりとりを出しています。仕入先のシートは全部で7つあります。 さらに、別シートにて仕入商品の平均単価を出したものを作成しております。 その平均単価を出しているシートについてなのですが。 画像のように、各シート(仕入先)で購入した商品の月毎の単価を出そうと試みているのですが、 単価平均のシートのセルB4に =SUMIF(A!$C5:$C1000,"1",A!$F5:$F1000)/SUMIF(A!$C5:$C1000,"1",A!$D5:$D1000) というような数式をいれてます。 これを、同じシートのセルC5に入力する場合は数式のA!をB!にひとつずつ手入力で変更しなければならないのでしょうか? また、B5に入力するセルも"1"を"2"にひとつずつ手入力で変更するのでしょうか? まとめて変更する方法、もしくは数式自体変更したほうがいいのか 大変お手数ではありますが、ご教示よろしくお願いします。

  • エクセルでの顧客管理作成について

    エクセルで顧客管理を作成しているのですが、ある例えばシート1のセルA1に会員番号もしくは会員名を手入力し、ENTERキーを押すと、シート2に作成してあるその会員の詳細データのシートに飛ぶというようなことはできるのでしょうか?

  • VBAからEXCELの新規ファイルを作成する

    VB6.0 Excel2000を使用しています。 VBAからEXCELファイルを参照する方法は前回教えていただきましたが 新規にEXCELファイルを作成する方法がわからないので教えてください。 【やりたいこと】 ・ファイル名は、ダイアログボックスから入力され、フルパスで変数に  格納されています。 ・シート名は固定文字で指定します。 (↑ここまではできています) (↓ここからわかりません) ・セルの内容を編集したあと、指定のファイル名・シート名で保存したい よろしくお願いします。

  • エクセルで作成したリスト

    エクセルで作成したリスト(氏名・住所など10項目程度で200件ほどです)を各取引先ごとにブックを作成して(エクセルファイルでシートは6枚ある決まった書式です)ファイル名は取引先名にしたいのですがどのような方法がありますか? やはりマクロやVBAなどで作るのが一番でしょうか? マクロやVBAは初歩的な簡単なものは作ったことがありますがあまり詳しくありませんが出来るようなら挑戦してみたいのですがもしサンプルコードなど教えていただければお願いします。

  • EXCELでのデータベースの作成方法について

    AAAというEXCELファイルがあります。 その中にシート「AAA-a」を作成します。 次に「AAA-b」を作成します。というようにどんどん増えていくとします。 次にBBBというEXCELファイルを作成し、その中のA1セルにAAAファイルの「AAA-a」シート名を読み込みそこに「AAA-a」シートまでのハイパーリンクをつけたいです。 A2セルにも「AAA-b」のハイパーリンクというようにどんどん自動で増やしていきたいのですがどうやればいいかわかりません。 多分マクロが一番いいかと思うのですがわかる方がいましたら教えてください。 よろしくお願いします。

  • エクセルで作成したデータシートがあるのですが、セルに入力してある数式に

    エクセルで作成したデータシートがあるのですが、セルに入力してある数式によって出された値を別のエクセルフォルダ中のセルに反映させることは可能でしょうか?よろしくお願いします。

  • EXCEL VBAで別ファイル作成

    エクセル97です。 エクセルファイル AAA.xls のすべてのワークシートのうち、セルA1に TRUE がはいっているもの、(枚数はそのときにより不定です。)のみをコピーして、別のエクセルファイルを作成したいのです。 その際、新しいファイルに貼り付けるのは書式と値のみで、シート名は 元ファイルのシート名と同じにしたいのです。 どのようなVBAを書けばよいかご教示ください。 (AAA.xls にはワークシート以外にグラフシートやダイアローグシートが入っています。)

  • エクセルのデータ入力をマクロで行う方法は?

    はじめまして。初めて質問させていただきます。 Excelで作業を行っていたのですが、マクロ(VBA?)で分からないことが出てきました。 Sheet1のQ6セルとQ7セルが結合されています。そこにはデータ(数式)が入力されています。 同様に、Q8とQ9、Q10とQ11・・・というように、データ(数式)が続いています。データ数は300個です。 他のシート(Sheet2)の A4セルから下に、先程のQ6セルのデータ A5セルにQ8のデータ・・・ というように書きたいのです。 これをマクロを組んで行うことは出来るのでしょうか? さらに、Sheet1で数式だったデータを文字列で保存できるとなお嬉しいです。 マクロ初心者ですいませんが、皆様のお知恵をお貸しください。よろしくお願いいたします。

専門家に質問してみよう