• ベストアンサー

前のセルの入力規則を見て、さらに入力規則で・・・

入力規則のリスト表示の方法について教えていただきたいのですが・・・  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についても同じ) よろしくお願いします。

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

  • ベストアンサー
  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

#1のmshr1962です。 名前の定義で()は使えません。 例えば名前定義で○○として =INDIRECT(SUBSTITUTE(A1,"(株)","")) として(株)をはずす必要があります。 もしくは ○○株式会社とすれば =INDIRECT(A1) でできます。

ken123
質問者

補足

mshr1962さま ばっちりできました。 ありがとうございます。 今後ともよろしくお願いします。 ほんと 助かりました。

その他の回答 (4)

回答No.5

よく見たらVBのカテゴリですけど、EXCELについてですよね? 私の回答が検討違いならごめんなさい。 また、この質問がEXCELについてでしたら、 「家庭向け」ではないと思いますが、 教えて!gooトップ > コンピューター [家庭向け] > ソフトウェア > Microsoftアプリケーション の方で、EXCELの質問が出ていますので、 そちらの方が、回答は付きやすいと思います。 それと、何についての質問なのかを明確にした方がいいと思います。 VBなら VBAなのか VB6なのか VB.NETなのか EXCELなら EXCEL98 EXCEL2000等 (バージョンによってはうまくいかない事もありますから)

ken123
質問者

お礼

taisuke555さん ご指摘ありがとうございます。 今回質問する前に関数がいいのかVBがいいのかよくわからず質問してしまって、ご迷惑をお掛けしました。 今後ともよろしくお願いします。

回答No.4

入力規則で行うには、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を利用すれば、できますが。 間違った回答でしたらすみません。

ken123
質問者

補足

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

  • utatane
  • ベストアンサー率33% (86/254)
回答No.2

A列というのはリストボックスなのでしょうか?それともテキストボックスなのでしょうか? テキストボックスなら、KeyDownイベントで Dim Integer i i = 0 for i = 1 to 3 テキストの内容 & "-" & i next とかやってリストに付け加えられますね。 いま、VBの動作環境が確認できない状態なので(JAVAのみで・・・)正確な文法は忘れてしまいましたが大体イメージはできるかと。

ken123
質問者

補足

utataneさま早速のご回答ありがとうございます。 #1さんの補足に記入させていただきましたが、リストボックスです。 できたら今回はVBを使用せずできたら最高なのですが・・・

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

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

ken123
質問者

補足

mshr1962さま早速のご回答ありがとうございます。 いろいろやってみたのですが、うまくいかず補足させていただいてよろしいでしょうか?  A列        B列 ○○(株) (配送、請求、確認) △△(株) (訪問、面談、連絡) ××(株) (事務、郵便、電話) ↑ 入力規則(リスト)で表示 A列のおのおののセルには入力規則のリストで○○(株)、△△(株)、××(株)をリストで選択できるようにします。 ○○(株)に関する業務は(配送、請求、確認)と決まっていますので、A列のセルに○○(株) が選択されたらB列おのおののセルのリストには(配送、請求、確認)だけを表示させたい。 A列のセルに△△(株)が選択されたらB列のセルには(訪問、面談、連絡)だけを選択させたい。 (B列はA列で選択された会社に関係する業務だけをリスト表示) なかなか上手く説明できずすいません。よろしくお願いします。

関連するQ&A