ABC
1 あ 左のようなセルを使ってツリー状にした表から
2 AAA 別シートにコンボボックスを横に3つ作成して
3 BBB ”あ”を選択したら隣のボックスに”AAA”
4 111 と”BBB”の選択肢が現れ、”BBB”を選
5 222 択したらその隣のボックスに”111”と”222”
6 い の選択肢が現れる といったことが出来ないでしょ
7 aaa うか?
8 333
9 bbb 説明がやっかいだと思いますので、「こんな本で見た」
という覚えがある方がいらっしゃいましたら是非教えて
下さい。お願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
以下の様な方法で如何でしょうか
【A】選択肢の設定
Sheet名を『TBL』と仮定して以下の様に指定します
___ A列 B列 C列 D列 E列 F列 G列 H列 I列
1行目 __ __ __ あ い AAA BBB aaa bbb
2行目 あ 式1 式1 AAA aaa 000 111 333 555
3行目 い 式1 式1 BBB bbb 999 222 444 666
4行目 う 式1 式1
5行目 え 式1 式1
・・・
・・・
1)A2~Anセルに最初に表示する値を入力します
2)B2セルに以下の式を入力してB2~Cnの全セルに式をコピー
=IF(OFFSET($D$1,ROW()-1,MATCH(OFFSET(A$1,A$1,0,1,1),$D$1:$I$1,0)-1,1,1)="","",OFFSET($D$1,ROW()-1,MATCH(OFFSET(A$1,A$1,0,1,1),$D$1:$I$1,0)-1,1,1))
●OFFSET関数:OFFSET(基準セル,行変位,列変位,抽出行数,抽出列数)
基準セル:入力情報の先頭のセル($D$1)に固定
行変位:現在行-1
列変位:OFFSET関数でA1からA1の値分下の行のセルを抽出し
その値でD列以降の1行目の値を検索し
何番目の列かを決定
抽出行数:単独セルを取り出すので1
抽出列数:同上
●範囲の指定:$D$1:$I$1
選択肢を入力した列の範囲の1行目を指定します
●参照結果のセルが空白の時の処理
IF(OFFSET(~)="","",OFFSET(~))として空白時には
空白をセットします(この処理をしないと0が返ります)
3)D列以降に以下の要領で入力
1行目:第一・第二のコンボボックスに表示する選択肢の値
2行目以降:選択肢の値区分名(あああAAAやBBB)に表示される値を入力
【コンボボックスの設定】
1)第一のコンボボックス 入力範囲:$A$2:$A$n リンクするセル:$A$1
2)第ニのコンボボックス 入力範囲:$B$2:$B$n リンクするセル:$B$1
3)第三のコンボボックス 入力範囲:$C$2:$C$n リンクするセル:$C$1
No.2
- 回答日時:
いつだったか、このサイトで似た質問を見たことがあります。
かなり感動した記憶があります。参考URLを見て下さい。
参考URL:http://www.okweb.ne.jp/kotaeru.php3?q=161673
No.3
- 回答日時:
質問通りの縦型の表を元に入力規則で対応してみました。
実際行ってみて、1つの深さに3列要していますので数十の深さまでは対応できそうですね。(Excel97で確認)Sheet1のどこか3つのセルに、DATA1、DATA2、DATA3の名前を付けます。
ここに入力規則のダイアログを表示します。
質問と同じ形式の表をSheet2のA1から3列を使って作成します。
Sheet2に次の算式をコピーします。
(※は表のデータがある最後の行までコピーします。)
E1:=MAX(MATCH("",A:A,-1),MATCH("",B:B,-1),MATCH("",C:C,-1))
※F1:=COUNTA($A$1:A1)
※G1:=COUNTA($B$1:B1)
※I1:=IF(A1<>"",$E$1-ROW()+1,0)
※J1:=INDEX(A:A,MATCH(LARGE(INDIRECT("$I$1:$I$"&$E$1),ROW()),I:I,0),0)
K1:=MATCH(DATA1,A:A,0)
※L1:=IF(B1<>"",IF(INDEX(F:F,$K$1,1)=F1,$E$1-ROW()+1,0),0)
※M1:=INDEX(B:B,MATCH(LARGE(INDIRECT("$L$1:$L$"&$E$1),ROW()),L:L,0),0)
N1:=MATCH(DATA2,INDIRECT("B"&(K1+1)&":B"&E1),0)+K1
※O1:=IF(C1<>"",IF(INDEX(G:G,$N$1,1)=G1,$E$1-ROW()+1,0),0)
※P1:=INDEX(C:C,MATCH(LARGE(INDIRECT("$O$1:$O$"&$E$1),ROW()),O:O,0),0)
E3:=COUNTA(J:J)-COUNTIF(INDIRECT("J1:J"&E1),"=0")
E4:=COUNTA(M:M)-COUNTIF(INDIRECT("M1:M"&E1),"=0")
E5:=COUNTA(P:P)-COUNTIF(INDIRECT("P1:P"&E1),"=0")
挿入→名前→定義で名前の定義ダイアログボックスを出して、名前を3つ定義します。
1つ目、名前:List1、参照範囲:=OFFSET(Sheet2!$J$1,0,0,Sheet2!$E$3,1)
2つ目、名前:List2、参照範囲:=OFFSET(Sheet2!$M$1,0,0,Sheet2!$E$4,1)
3つ目、名前:List3、参照範囲:=OFFSET(Sheet2!$P$1,0,0,Sheet2!$E$5,1)
Sheet1で入力規則を設定します。
DATA1を選択して、データ→入力規則で、入力値の種類にリスト、元の値に =List1
DATA2を選択して、データ→入力規則で、入力値の種類にリスト、元の値に =List2
DATA3を選択して、データ→入力規則で、入力値の種類にリスト、元の値に =List3
Sheet2は項目数がわからないので縦方向で考えています。質問通りの形式で入力します。
A列が異なり、B列が同じでC列が異なるようなパターンも考慮しているつもりです。
ただ、3つの入力をした後、修正する場合、他に関係なく修正できます。この点を考慮してみましたが、長くなるので省略しています。
また、3つの入力箇所を3列(3列の入力規則)に増やしてみましたが、こういう意味の質問でした?こちらのほうが入力の省力化ができますね。
入力規則ではなく、VBAのコンボボックスで動かすには、
ListFillRangeをList1、LinkedCellをDATA1 とかにします。
何を行っているかじっくり見ると、飛び離れたデータを1つにまとめているだけの算式でした。
汚い算式ですが、ご参考に。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの警告について
-
タイムスタンプとテキストから...
-
シートの情報を別のシートへま...
-
マクロの処理が遅くなった
-
Excelでの文字色
-
ワークシートに出現したこの画...
-
EXCELの散布図で日付が1900年に...
-
OFFSET関数を使用したいのです...
-
エクセルでファイルの最終更新...
-
エクセルの文字が途中から消える
-
エクセルデーターから必要な項...
-
Excel 大小比較演算子による「...
-
SUBTOTALは、参照された数字で...
-
エクセルの数式バーのフォント...
-
エクセルの「条件付き書式」を...
-
Excelについて教えてください。...
-
エクセルVBA 月の中で、月~土...
-
Excelの数字の前に入っている空...
-
Excelの関数について このよう...
-
セルの数を求めたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelの警告について
-
Excelで数値を時間数に変換する...
-
エクセルの数式バーのフォント...
-
エクセルで数字の組み合わせを...
-
エクセルを使用して、円周率を...
-
Excelで特定の文字列が含まれて...
-
Excel 対象のセルに入力が無い...
-
任意の値が存在する行に名前を...
-
エクセルでファイルの最終更新...
-
index関数の説明をお願いします。
-
条件付き書式でやりたいのですが
-
重複しない値を取り出したい
-
【ExcelVBA】UTF-8(BOM無)でC...
-
【マクロ】マクロが割当てされ...
-
エクセル IF計算式?でしょうか?
-
エクセルで曜日を入れたい
-
表中の指定した条件の文字列を...
-
【Excel】版が同じ事を示す番号...
-
EXCELの散布図で日付が1900年に...
-
Excelについて。Excelに縦1列に...
おすすめ情報