プロが教えるわが家の防犯対策術!

入力規則のリスト表示の方法について教えていただきたいのですが・・・

 A列          B列
A,B,C  A-1,A-2,A-3,B-1,B-2,B-3,C-1,C-2,C-3

A列に、A,B,Cと入力規則を設定します。
B列には、A列に入力したAに関係するA-1,A-2,A-3、
Bに関係するB-1,B-2,B-3、Cに関係するC-1,C-2,C-3
を入れたいのですが、B列のリストが多くなりすぎるので、A列にAを入力したときはA-1,A-2,A-3のみをリストに表示させることは、可能でしょうか?(B,Cについても同じ)

よろしくお願いします。

A 回答 (5件)

A-1


A-2
A-3
として「挿入」「名前」「定義」で「A列」と名前付けします。
同様に、B列・C列を名前付けしてください。
入力規則をリストにして
元の値に=INDIRECT($A2&"列")
とします。
A2の値を参照して選択できるリストが変わります。
上記例では"列"にしましたが他の文字でも大丈夫です。
注意:名前付けで、AA,A1等のようにセルや列・行として判定される物は名前にできません。

この回答への補足

mshr1962さま早速のご回答ありがとうございます。
いろいろやってみたのですが、うまくいかず補足させていただいてよろしいでしょうか?

 A列        B列
○○(株) (配送、請求、確認)
△△(株) (訪問、面談、連絡)
××(株) (事務、郵便、電話)

入力規則(リスト)で表示

A列のおのおののセルには入力規則のリストで○○(株)、△△(株)、××(株)をリストで選択できるようにします。
○○(株)に関する業務は(配送、請求、確認)と決まっていますので、A列のセルに○○(株) が選択されたらB列おのおののセルのリストには(配送、請求、確認)だけを表示させたい。

A列のセルに△△(株)が選択されたらB列のセルには(訪問、面談、連絡)だけを選択させたい。

(B列はA列で選択された会社に関係する業務だけをリスト表示)

なかなか上手く説明できずすいません。よろしくお願いします。

補足日時:2004/04/09 12:07
    • good
    • 0

A列というのはリストボックスなのでしょうか?それともテキストボックスなのでしょうか?


テキストボックスなら、KeyDownイベントで
Dim Integer i
i = 0
for i = 1 to 3
テキストの内容 & "-" & i
next
とかやってリストに付け加えられますね。

いま、VBの動作環境が確認できない状態なので(JAVAのみで・・・)正確な文法は忘れてしまいましたが大体イメージはできるかと。

この回答への補足

utataneさま早速のご回答ありがとうございます。
#1さんの補足に記入させていただきましたが、リストボックスです。

できたら今回はVBを使用せずできたら最高なのですが・・・

補足日時:2004/04/09 12:11
    • good
    • 0

#1のmshr1962です。


名前の定義で()は使えません。
例えば名前定義で○○として
=INDIRECT(SUBSTITUTE(A1,"(株)",""))
として(株)をはずす必要があります。

もしくは
○○株式会社とすれば
=INDIRECT(A1)
でできます。

この回答への補足

mshr1962さま ばっちりできました。
ありがとうございます。

今後ともよろしくお願いします。
ほんと 助かりました。

補足日時:2004/04/09 15:16
    • good
    • 0

入力規則で行うには、1つ問題が出てくるとは思いますが、


こんな方法はどうでしょうか?

 A列    B列 C列  D列
○○(株) 配送 請求 確認
△△(株) 訪問 面談 連絡
××(株) 事務 郵便 電話

のように、1つの会社での業務は、1行にすべて書きます。
E列、F列・・・

「挿入」→「名前」→「定義」で
会社 Sheet1!A1:A3   (会社の範囲)
業務 Sheet1!B1     (業務の左上のセル)
とします。

会社を入力するセルは 入力規則で
=会社
業務を入力するセルは 入力規則で
=OFFSET(業務,MATCH(A1,会社,0)-1,0,1,3)
(会社を入力するセルをA1にしています)
(業務はD列まで(B,C,Dの3列)にしていますので、
E列やF列に増やす場合、最後の3を4,5に変えてください。

業務数が、会社毎に違う場合、リストに空白が表示されてしまうので
表示させたくなければ、
=OFFSET(業務,MATCH(A1,会社,0)-1,0,1,COUNTA(OFFSET(業務,MATCH(A1,会社,0)-1,0,1,3)))
にしてください。

で、該当する会社のみの業務リストが表示されます。

ただ、使ってみればわかると思いますが、
A社で業務内容まで選択して、B社に変更しても
A社の業務内容が消える事はありません。
この問題点は、関数での解決は私にはわかりません。
VBAを利用すれば、できますが。

間違った回答でしたらすみません。

この回答への補足

taisuke555さま、ありがとうございました。

VBAでチャレンジしたかったんですが、業務の内容は従業員に入れてもらうようにしたいので今回はできたら関数レベルでできれば幸いでした。
(といっても私もまだVBAの超初心者なのですが・・)

今後ともよろしくお願いします。

補足日時:2004/04/09 15:17
    • good
    • 0

よく見たらVBのカテゴリですけど、EXCELについてですよね?



私の回答が検討違いならごめんなさい。

また、この質問がEXCELについてでしたら、
「家庭向け」ではないと思いますが、

教えて!gooトップ > コンピューター [家庭向け] > ソフトウェア > Microsoftアプリケーション

の方で、EXCELの質問が出ていますので、
そちらの方が、回答は付きやすいと思います。

それと、何についての質問なのかを明確にした方がいいと思います。
VBなら VBAなのか VB6なのか VB.NETなのか
EXCELなら EXCEL98 EXCEL2000等
(バージョンによってはうまくいかない事もありますから)
    • good
    • 0
この回答へのお礼

taisuke555さん ご指摘ありがとうございます。

今回質問する前に関数がいいのかVBがいいのかよくわからず質問してしまって、ご迷惑をお掛けしました。

今後ともよろしくお願いします。

お礼日時:2004/04/09 15:26

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