- 締切済み
**自動表示について**
下記を実現することは可能でしょうか? シート1 A1:国名を手入力する(例:日本やスペイン) B1:A1で手入力された国名を元に都市リストを表示する(例:東京/札幌/仙台など) C1:A1とB1を元にランクを自動で表示する ※条件:都市がある国とない国があります(例:スペインに都市はなく/日本には都市があります) (ですのでA1に『スペイン』と手入力すると、C1に『Sランク』と自動表示されるが、 A1に『日本』と手入力すると、B1でリストから都市を選択しはじめてC1に『Aランク』等と表示される) シート2 B列に国名/C列に都市/D列にランクを記載しています (例:日本 /仙台 /Aランク 日本 /札幌 /Bランク スペイン/ /Sランク ブラジル/リオ /Aランク ブラジル/サンパウロ/Bランク)
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- tom04
- ベストアンサー率49% (2537/5117)
No.1です。 >入力した国が該当ない場合は「該当なし」と表示させたいのですが・・・ C1セルの表示に関する質問でよい訳ですね? 色々なコトを考慮すると少々長くなりますが、 =IF(COUNTBLANK(A1:B1)=2,"",IF(COUNTIF(Sheet2!B:B,A1),IFERROR(INDEX(Sheet2!D:D,MATCH(A1&B1,Sheet2!E:E,0)),""),"該当なし")) という数式にしてみてください。 ※ 細かいコトを言えば、B1セルにデータが残っていて、A1セルだけが変わった場合 エラーと判断されて、空白になると思います。 本来ですと、マクロ等でA1セルのデータが変わった時点で B1セルを空白にするのが好ましいのかもしれませんね。m(_ _)m
- keithin
- ベストアンサー率66% (5278/7941)
とりあえずご相談の例示に照らしてのお手軽版: C1に =IF(A1="","",IF(VLOOKUP(A1,Sheet2!A:B,2,FALSE)="",VLOOKUP(A1,Sheet2!A:C,3,FALSE),IF(B1="","",VLOOKUP(B1,Sheet2!B:C,2,FALSE)))) B列の入力規則のリストの数式: =OFFSET(INDIRECT("Sheet2!B"&MATCH(A1,INDIRECT("Sheet2!A:A"),0)),0,0,COUNTIF(INDIRECT("Sheet2!A:A"),A1),1) #エラーと判断されます云々が現れても無視して続行する事
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一例です。 ↓の画像で左側がSheet1・右側がSheet2とします。 Sheet2のE列を作業用の列として使用します。 E2セルに =B2&C2 という数式を入れオートフィルでずぃ~~~!っと下へコピーしておきます。 そして、Sheet1のE列をB列の「リスト」表示させるための列とします。 E1セルに =IFERROR(INDEX(Sheet2!C$1:C$1000,SMALL(IF(Sheet2!B$1:B$1000=A$1,ROW(A$1:A$1000)),ROW(A1))),"") これは配列数式になってしまいますので、Shift+Ctrl+Enterで確定! この画面からコピー&ペーストする場合は、 上記数式をドラッグ&コピー → E1セルを選択 → 数式バー内に貼り付け → そのまま(編集可能なまま)Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これを下へコピーしておきます。 (E列が目障りであれば非表示にしておきます) 次にC1セルに =IFERROR(INDEX(Sheet2!D:D,MATCH(A1&B1,Sheet2!E:E,0)),"") という数式を入れておきます。 最後にB1セルを選択 → データ → データの入力規則 → リスト → 元の値の欄に =OFFSET(E$1,0,,COUNTIF(E:E,"?*")) という数式を入れOK これで何とかご希望に近い形にならないでしょうか? ※ 仮に行が下へ続く場合、Sheet1のE列リストを行が変わるごとに変更する必要がありますので、 その場合は、数式ではなくVBAになってしまいます。 とりあえずは1行だけの方法です。m(_ _)m
補足
ありがとうございます。 入力した国が該当ない場合は「該当なし」と表示させたいのですが、その際は =IFERROR(INDEX(Sheet2!D:D,MATCH(A1&B1,Sheet2!E:E,0)),"") にどのように組み込めばよろしいでしょうか??