• ベストアンサー

ExcelでSheet1/2を作成・・・

S1に請求書、S2に顧客情報を 初めて質問を投稿いたします。 ExcelでSheet1・Sheet2があります。 Sheet2には顧客情報があります。  A列   B列   C列    D列 会社名 郵便番号  住所  電話番号  a xxx-xxxx a1xxxxx xxx-xxxx b xxx-xxxx b1xxxxx xxx-xxxx c xxx-xxxx c1xxxxx xxx-xxxx c xxx-xxxx c2xxxxx xxx-xxxx c xxx-xxxx c3xxxxx xxx-xxxx とあるとします。 そこで請求書をSheet1を作成してあり、会社名をリストで選択するようにしてあります。会社名を選択するとSheet1上にある、住所が自動的に入力されるようにしてあります。 質問は、会社Cには複数住所があります。そこで、会社Cを選んだときだけ、住所欄にプルダウンで住所を選べるようにしたいのですが、可能でしょうか?

  • RVaki
  • お礼率75% (3/4)

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

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

まあ素直に考えて、VBAなどのプログラムを組む問題でしょう。 ーー それと質問の説明が不十分では。 >会社Cには複数住所があります はどういう風にシート状の行・列の仕組みで表されるのか。 その表現も自由に考えると2-3ありえる。 (例)同行別列 同行同列で/の前後に併記 別表 それは難しさをや、不可能を決定付ける。 ーー シートで、あるデータ条件の場合、ドロップダウン(入力規則) を出したり出さなかったりも、仕組みとして難しいと思う。 ーー ただし下記のようなのが使えるかやってみるとか。 下記が行数(=顧客数)が多くなった場合、有効かどうか判らないが、参考に 例データ F,G,H、I列  F列氏名(質問では会社名)、G-I列は支店住所 3支店までは登録を許す例。 山田 調布市 武蔵野市 近藤 三鷹市 鈴木 武蔵野市 国立市 田中 杉並区 武蔵野市 練馬区 ーーー A-B列 氏名   選択住所 鈴木 武蔵野市 田中 杉並区 山田 調布市 ーー 前準備 F1:I3を範囲指定 挿入ー名前ー作成ー左端列ーOK B1:B5範囲指定 B1をアクチブになっていることを確認して データー入力規則ーリストー=INDIRECT(A1) B1をクリックすると鈴木の行f1:I1がリストに出る。 その中から選択。 A4に近藤と入力 B4をクリックすると、三鷹市だけが出てくる。これを選択。 といった風です。

RVaki
質問者

お礼

何とかできそうです。説明不足のところ丁寧にご説明いただき本当にありがとうございました!

その他の回答 (3)

  • web2525
  • ベストアンサー率42% (1219/2850)
回答No.3

ややこしくなるかも知れませんが Sheet2の会社住所に会社名で名前を定義 会社名”a”の住所セル(Sheet2!D2)に”a”と名前を定義、会社名”c”の住所セル範囲(Sheet2!D4:D6)に”c”と名前を定義づけ。 (”c”と言う名前では実際には定義できませんが) Sheet1のS1セルに入力規制(種類:リスト)で元の値に =INDIRECT(B5) を設定。 Vlookupとの併用はできませんがリストから住所選択は可能、住所が一つだけの会社もリストから選択する必要が出てきます。 単一住所と複数住所が混在している状態で、単一住所の場合には自動的にその住所を表示し、複数住所選択可能な場合にリスト表示するにはマクロを利用しないと難しいかと思います。

RVaki
質問者

お礼

とてもわかりやすい説明いただき、ありがとうございました! 参考にさせていただきます。

  • rukuku
  • ベストアンサー率42% (401/933)
回答No.2

はじめまして VBAでしたらそのような器用なこともできますが、基本機能&関数だけではできないと思います。仮にできる方法があってもやりかたが複雑になります。 FEX2053さんが#1でおっしゃている、 >「姑息な手段」としては、会社名に(東)(名)(阪)などを付け、システム >上では別会社にして誤魔化すって方法があるかと。 が一番かと思います。 が、ちょっと「改良」します。(^_^; この方法では、(東)(名)(阪)などの余計な文字が表示されてしまいます。 そこで、 C社 C社_ C社__ (「 _ 」の部分は実際にはスペース) とすれば表示に影響を与えることなく、区別できます。 プルダウンのリストではC社が3つ並んでいるようにしか見えませんが、VLOOKUP関数はこのスペースの有無をちゃんと区別してくれます。 これをセコイなどといわないでください。会社で使う死すレムであれば、他の人でも扱えなければなりません。 凝ったものを作るよりも、多少みためは悪くても、シンプルなものの方がいいです。

RVaki
質問者

お礼

なるほど・・・スペースで違いをつけるのですねぇ。 確かに難しくやろうとしないでシンプルなアプローチのほうが他の人にもつかいやすいですよねぇ! ありがとうございましたっ、参考にさせていただきます。

  • FEX2053
  • ベストアンサー率37% (7987/21355)
回答No.1

どういう機能で動いているか良く分からないのですが・・・。 「姑息な手段」としては、会社名に(東)(名)(阪)などを付け、システム 上では別会社にして誤魔化すって方法があるかと。これなら凝った事を しないでも、現状のシステムのままで動作可能ですしね。 本格的には、この「選択システム」の詳細がわからないとどうにも。 ただ、VBAでコードを組んでいるなら、それなりの技術をお持ちなら ナンとでもなりますけど。

RVaki
質問者

補足

情報が足りないですね・・・失礼いたしました。 VBAではないです・・・ 関数のみです・・・ 「リスト:会社名リスト」を作成し、S1の会社名欄に入力規則でリストを指定しました。 同じS1内の住所欄には 「=IF(ISNA(VLOOKUP(B5,Sheet12会社名リスト,3,FALSE)),"",VLOOKUP(B5,Sheet2!会社名リスト,3,FALSE)) として、B5は会社名リストから選択するよう西、Sheet2の会社名リストの3つめのセルに入力してある住所を表示しています。

関連するQ&A

  • エクセルで初心者で困っています。こんな事できますか?

    ・シート1のA列には「装置番号」、B列には「装置名」、C列には「顧客名」、D列には「住所」、E列には「電話番号」が入っています。「装置番号」と「装置名」は重複することが無いように設定されています。因みにデーター数は5000件位です。   このときシート2のA1に「装置番号」、B1に「装置名」を入れるとシート1の該当する行の「顧客名」、「住所」、「電話番号」がシート2のC1,D1,E1に自動的に出るようにしたいのですがなかなか出来ません。  本も買ってきて、関数を勉強中ですが旨く行きません。又、エクセルで難しい様なら、他の方法も教えていただければ幸いです。よろしくお願いします。

  • エクセルでの顧客管理

    エクセル初心者です。顧客管理で2件こまっています。 (1)A列・・会社名、B列・・携帯番号、C列・・担当者名です。別の表にVLOOKUPによって検索したい会社名前を入れると携帯番号と担当者が表示されるようになっています。しかし、同じ会社に複数の担当者がおり複数担当者がいる場合は使えません、同会社の全員の携帯番号と担当者名が出てくるような関数もしくは方法はありませんか?会社ではアクセスが使える環境ではありません。なんとかエクセルのみで乗り切るのは難しいでしょうか? (2)(A)のワークシートにA列顧客名 B列住所 C列担当者名(3人)のデータがあります。このデータを担当者別にそれぞれの担当者のワークシートに反映させたいのです。追加の顧客は(A)で入力しそれが各担当者別のワークシートに反映される方法はありませんか?

  • エクセルでシートを探しデータをフォームにコピー

    見ていただきありがとうございます。 エクセルを使って次のようなことを考えています。 発注のあったお客様の顧客番号001~300(順不同)が毎日更新されてきます。 A1には顧客番号、B2には日付、B3とC3にはコード 数量、B4からC13にデータがあります。 .........A............ B................C 1.....001 2...............2013/7/7 3.................コード..........数量 4..................AA1.............10  5..................AB2.............15 6..................BA1.............20 7..................BB1.............5  8..................CA2.............10 9..................CB1.............15 10................DA1.............10  11................DB2.............15 12................EA1.............20 13................EB2.............30 A1がシート名になってます。 ************************************************************************ このような場合、sheet1にコマンドボタンを設けて押したとき001~300のシート名がA列に抽出され、 順番にデータが見積もり、納品書、請求書のフォームに転記できるようにならないでしょうか? 各フォームのセルは共通でB1に顧客番号、C1に日付、B4~B13コード 数量、C4~C13に数量を コピーしたい。 教えてもらえたらうれしいです。

  • EXCELのデータベース利用について(VBA)

    VBA初心者の者です。 下記の様なEXCELファイルを作りたいのですが、どのようにすれば良いのか まったくわかりません。 ACCESSでの構築が簡単なのかもしれませんが、データ量がそれほど多くないことと 職場にACCESSがないため、可能であればEXCELで構築したいと考えています。 私自身、プログラムの知識がなく、EXCEL VBAのサイトを確認するのですが、いまいち どうすれば良いのかわかりません。 ぜひご教授の程よろしくお願いします。 3つのシートの構成は以下になります。 【入力シート】 A1セルに文字列(A~Z)入力欄 【○○データシート】 A列に A~Z の文字列 B列に 001~100までの数値 C列に 001~100までの数値 D列に 001~100までの数値 E列に 001~100までの数値 例)    A列   B列   C列   D列   E列 1   A   001 2   B   001    002    003   004 3   C   003 4   D   002    003 【▽コマンドシート】 A列に 001~100までの一意の数字 B列に 文字列(コマンド) C列に 文字列(コマンド詳細) 例)    A列    B列    C列 1   001   xx     blank 2   002   xxx△   xxx 3   003   xxxx    x○ 4   004   xxxxx   xxx 【欲しいVBA】 1、入力シートのA1セルに○○データシートのA列に該当するA~Zの 文字列を入力。 2、○○データシートのB列~F列までの数値を参照 3、2の数値において▽コマンドシートのA列に記載ある番号と紐づけを行い、 ▽コマンドシートのB列、C列に記載がある文字列を入力シートのB列、C列にコピー ※コピー時は▽コマンドシートの書式や体裁情報も含めてコピー。 例としては以下になります。 入力シートの A1セルにDを入力した場合は 入力シート    A列    B列    C列 1   D    xxx△  xxx 2        xxxx    x○ 3 以上、ご教授よろしくお願いします。

  • 行数分をワークシート挿入する

    こんにちわ。 名簿を作っています。 Sheet1に管理番号、住所、名前等のデータがあります。 <Sheet1> 管理番号 住所     名前     電話番号 S0001   東京都・・・  ●山●子  XX-XXXX-XXXX S0002  神奈川県・・・ ●田●男 XXX-XXX-XXXX S0003  埼玉県・・・  ●川●子 XXXX-XXX-XXXX この住所録を、各シートにコピーをしようと考え、管理番号をシート名にして、行数分のワークシートを増やそうと思っています。 下記のVBAを作成してみたのですが、空のワークシートが最初のS0001(ワークシート1つ分)しか作成されません。 Sub 住所録() Dim iRow as Variant iRow = 1 Do Until Cells(iRow, 1).Value = "" ActiveWorkbook.Worksheets.Add(after:=Worksheets(Worksheets.Count)).Name = Cells(iRow + 1, 1) iRow = iRow + 1 Loop Sheets("Sheet1").Select Range("A1").Select End Sub Sheet1のデータ行数分、シートを増やすにはどのようにしたらよいでしょうか。 住所録は都度増えていきます。 どなかたご教示願います。 よろしくお願いします。

  • エクセルで複数シートを検索して抽出するには

    いつも参考にさせていただいています。 過去の質問を見てもわからなかったので回答をお願いします。 顧客管理台帳を作成していますが、他のファイルの複数のシートを検索してデータの抽出をしたいのです。 顧客管理台帳というファイルのシートに顧客一覧があります。 A番号 B顧客名 C住所 D対応状況 進捗表というファイルにランクA、B、Cのシートがあります。 A番号 B顧客名 C住所 D内容 E進捗状況 AAAA  ○○××  ・・・       保留 PPPP  ××△△  ・・・       終了 シートごとに顧客名の重複はありません。 顧客名はランダムに並んでいます。 顧客管理台帳の顧客名を進捗表の各シートから検索して 対応状況に進捗状況を反映させたいのです。 進捗表の一覧を作るとVLOOKUP関数でできると思うのですが シート毎の管理をし、日々更新しているので 現状のままでできる方法はないでしょうか。 よろしくお願いいたします。

  • エクセルの再計算

    再計算で処理スピードがかなり遅くなってしまいました。 シート1のA列に顧客番号B列に顧客氏名を入力しています。現在58000名が入力されております。これからも月に100名程度増加していきます。 シート2にシート1を反映させています。 シート2のA列に今日の日付を入力しB列に顧客番号を打ち込むとC列にシート1の氏名が表示されます。 しかし数が多いもので番号を打ち込みエンターキーを押すと再計算が始まり能率が上がりません。 このような状態を回避する方法がありましたなら教えていただきたいのですが。

  • Excel,VBA シートの自動作成、データ

    Sheet 1 に住所録 Sheet 2~50までに同じフォーマットで A  B  C~E F~H No. 名前 S~L S~L と並んでいてA4から名前 C~の列には各数量が50行ほど入力されています。 Sheet 2~50 までを名前ごとにまとめたSheet を自動で作成したいです。 Sheet1とSheet2~50の名前順は同じです。 例 Sheet51 シート名 Aさん    DEF列    SML 1行目1,2,3(Sheet2AさんのC~E数量) 2行目2,2,2(Sheet2AさんのF~G数量) 3行目2,2,2(Sheet3AさんのC~E数量) 4行目4,4,4(Sheet3AさんのF~G数量) 同じようにSheet 53 Bさん となるようにループする方法をご教授ください。 よろしくお願い致します。

  • エクセル2000 電話番号の市外局番を入れたFAX番号を表示したい

    市外局番からの電話番号と隣の列に市外局番を抜いた(同じ番号なので)FAX番号のデータが入っております。         A        B      電話番号    FAX番号 1 XXX-XXXX-XXXX XXXX-XXXX 2 XXX-XXXX-XXXX XXXX-XXXX と言った具合になります。 これを、C列に市外局番を加えたFAX番号を表示するようにしたいので、C1に=LEFT(A1,4)&B1といれて、そのままオートフィルをかけたのですが、地域によって市外局番が2~5桁ありますので、市外局番が3桁以外の部分は目で見てLEFT関数の桁数を打ち変えております。 これを関数か何かで一括で出来る方法はないものかと思い質問させていただきました。        A          B         C      電話番号    FAX番号    FAX番号2 1 XXX-XXXX-XXXX XXXX-XXXX XXX-XXXX-XXXX  2 XXX-XXXX-XXXX XXXX-XXXX XXX-XXXX-XXXX  最終的に上のような形にしたいのです。 この一覧表は変わることがありますし、データが追加されるときはデータの一番下にあるわけではないので、変わるたびに一から入力しなおさなければなりません。 -の前の数字(市外局番)を数えられればいいと思うのですが、それをカウントできるやり方はあるのでしょうか? よろしくお願い致します。

  • Excel シート間のデータの照合

    Excelで、シート間のお客様データ(だいたい各1万件)を照合します。下記は現在の照合方法ですが、これでは時間がかかるうえ手作業が多く発生しミスにつながります。頻繁に行う作業なので、関数でも、マクロでも、とにかくもう少し簡単にできる方法がありましたら、どうぞご教授ください。よろしくお願いします!! 【目的】 シート「sheet2008」には2008年度のデータ。シート「sheet2007」には「sheet2008」と同じ形式の2007年度のデータが入っています。シート「sheet2008」に、そのお客様の2007年度の担当営業マンを表示させたいのです。 【例】 列A(電話番号): 011-231-1112 列B(名前):佐藤 一郎 列C(住所):北海道札幌市中央区北1-1-1 列D(担当営業マン):鈴木 新規の列(2007年度の担当営業マン):鈴木  ・「sheet2008」「sheet2007」はほぼ同じデータですが、一部のお客様は名前が変わっていたり、住所が変わっていたりします。  ・「sheet2007」にないお客様が「sheet2008」にあったり、その逆があったりして、各シートのデータ件数は一致しません。  ・名前が同じでも住所が違うデータ、電話番号が同じでも担当営業マンが違うデータは別者として扱います。  ・「顧客ID」のような“必ずユニークな情報”は存在しません。 【現在の照合方法】 (1)「sheet2008」の各列の前に空白列を挿入する。  (データの1行目はタイトル行…B1:電話番号/D1:名前/F:住所/H:担当営業マン)  (データの2行目以降はデータ)     列A(空白行):     列B(空白行): 011-231-1112     列C(空白行):     列D(名前):佐藤 一郎     列E(空白行):     列F(住所):北海道札幌市中央区北1-1-1     列G(空白行):     列H(担当営業マン):鈴木 (2)「sheet2007」を列Aの電話番号で昇順に並べ替える。 (3)「sheet2008」の電話番号が「sheet2007」にあるかを調べる。     A2:「=IF(B2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,1,0)),"○","▲")」 (4)(3)で調べた「sheet2008」の電話番号と同じ行にある名前/住所が「sheet2007」にあるかを調べる。     C2:「=IF(D2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,2,0)),"○","▲")」     E2:「=IF(F2=(VLOOKUP(Sheet2008!$B2,Sheet2007!$A:$D,3,0)),"○","▲")」 (5)電話番号/名前/住所がすべて一致するデータについて、「sheet2007」にある担当営業マンの値を列Gに表示させる。     G2:「=IF((AND(A2="○",C2="○",E2="○"))=TRUE,(VLOOKUP($B2,Sheet2007!$A:$D,4,0)),"▲") (6)"▲"やエラー値で表示される計算結果について、目視で確認する。 (終了)

専門家に質問してみよう