昨日見た夢を教えて下さい

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を選んだときだけ、住所欄にプルダウンで住所を選べるようにしたいのですが、可能でしょうか?

A 回答 (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をクリックすると、三鷹市だけが出てくる。これを選択。
といった風です。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/07 15:35

ややこしくなるかも知れませんが


Sheet2の会社住所に会社名で名前を定義
会社名”a”の住所セル(Sheet2!D2)に”a”と名前を定義、会社名”c”の住所セル範囲(Sheet2!D4:D6)に”c”と名前を定義づけ。
(”c”と言う名前では実際には定義できませんが)

Sheet1のS1セルに入力規制(種類:リスト)で元の値に
=INDIRECT(B5)
を設定。

Vlookupとの併用はできませんがリストから住所選択は可能、住所が一つだけの会社もリストから選択する必要が出てきます。

単一住所と複数住所が混在している状態で、単一住所の場合には自動的にその住所を表示し、複数住所選択可能な場合にリスト表示するにはマクロを利用しないと難しいかと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/07 15:40

はじめまして



VBAでしたらそのような器用なこともできますが、基本機能&関数だけではできないと思います。仮にできる方法があってもやりかたが複雑になります。

FEX2053さんが#1でおっしゃている、
>「姑息な手段」としては、会社名に(東)(名)(阪)などを付け、システム
>上では別会社にして誤魔化すって方法があるかと。
が一番かと思います。

が、ちょっと「改良」します。(^_^;
この方法では、(東)(名)(阪)などの余計な文字が表示されてしまいます。
そこで、
C社
C社_
C社__
(「 _ 」の部分は実際にはスペース)
とすれば表示に影響を与えることなく、区別できます。
プルダウンのリストではC社が3つ並んでいるようにしか見えませんが、VLOOKUP関数はこのスペースの有無をちゃんと区別してくれます。

これをセコイなどといわないでください。会社で使う死すレムであれば、他の人でも扱えなければなりません。
凝ったものを作るよりも、多少みためは悪くても、シンプルなものの方がいいです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/09 13:58

どういう機能で動いているか良く分からないのですが・・・。



「姑息な手段」としては、会社名に(東)(名)(阪)などを付け、システム
上では別会社にして誤魔化すって方法があるかと。これなら凝った事を
しないでも、現状のシステムのままで動作可能ですしね。

本格的には、この「選択システム」の詳細がわからないとどうにも。
ただ、VBAでコードを組んでいるなら、それなりの技術をお持ちなら
ナンとでもなりますけど。

この回答への補足

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

補足日時:2009/02/06 15:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!