メインコンテンツへスキップ
見出し画像

[EXCEL] リスト入力⑪ 都道府県⇒市町村選択の2段階リスト別解(タテヨコ表不要版・1セルのみ有効)~入力表作成レッスン~

    ▶目次>様式/入力表の作成>プルダウンリスト
    ▶関連記事:プルダウンリスト

    【まとめ】
    ・都道府県名選択⇒市町村名選択の2段階プルダウンリストの別解

    画像
    左が元データ、右が入力表
    本来は別シートにすべきものですが
    分かりやすいようい同一シートにしています

    ・都道府県×市町村のタテヨコ表も「名前の定義」もINDIRECT関数も不要
    ・ただし1セルのみ限定(複数セルへの適用方法はあるが、今回はパス)。

    【説明】
    先日(1か月も前ですね・・・)、こんな記事を書きました。

    都道府県×市町村の縦横リストを作って、都道府県選択⇒市町村選択、という2段階のプルダウンを作る、というものです(市町村名は常に一番上が表示される)。

    今回の方法は、「都道府県×市町村の縦横リスト」の作成が不要で、都道府県選択⇒市町村選択、と同じことが出来るプルダウンリストです。
    ただし、とりあえず「1つのセル限定」です。
    このままでは、市町村の入力欄が縦に並んでいる表には向きません(やり方はありますが、今回はパス)。

    データは、いつも通り、総務省の市町村コード表を使います。
    地方行政のデジタル化|全国地方公共団体コード - 総務省
    「都道府県コード及び市区町村コード」
    (令和6年1月1日更新)Excelファイル

    シート名を「市町村シート」にし、「都道府県名(漢字)」「市町村名(漢字)」の「(漢字)」は消しておきます(政令指定都市のシートは削除)。

    画像

    1 元データの2行目に空欄を設けておく
    (この空白を、プルダウンリストの「初期値」とするため)

    画像

    2 プルダウンリスト用のデータを作る
    ①「入力表」を作成
    *本来は「リスト」というシートを作り、そこで作業した方がいいのですが、今回は説明用に「リスト」と「入力表」を同じシートに作成します。
    *エクセルのバージョンによっては、プルダウンリストが自動で重複を排除するため、この作業は不要になります(設定しても問題はない)。

    ① A1セルに「=UNIQUE(市町村リスト!B:B)」と入れる。
    *セルに =UNI と入力⇒関数候補から「↓」で「UNIQUE」を選んでTabで確定⇒市町村リストのB欄を選択)⇒ENTER

    画像
    上図はENTER押下後のもの

    ⓶ A列を「セルの書式設定」(Ctrl+1)で「0」を非表示にしておく。

    画像

    ⇒ 0が消える

    画像

    ③ E,Fセルに、入力欄を作る。
    *本来は別シートに作る。

    画像

    ④ B1セルに「市町村」と入れる。
    ⑤ B2セルに以下を入れる。
    =FILTER(市町村リスト!C:C,市町村リスト!B:B=入力表!E2)
    *セルに=FIL と入力 ⇒ 関数候補から ↓ で「FILTER」選択⇒Tabで確定 ⇒ 市町村リストのC列選択 ⇒ 「 , 」入力 ⇒ 市町村リストのB列(都道府県の列)を選択⇒「=」入力⇒ 入力表のE2(都道府県名を入れるセル)を選択 ⇒ ENTER

    画像

    3 E2の都道府県欄にプルダウンリストを設定する。
    ① E2を選択して、「データの入力形式」を開く(Alt⇒A⇒V⇒V)
    ⓶「入力値の種類」で「リスト」を、「元の値」でA列を選ぶ。

    画像

    ③ E2セル右の▼をクリック(又は Alt+↓)すると、都道府県名が出る。

    画像

    ④ 都道府県を選ぶと、B列に該当の市町村が表示される

    画像

    4 F2(市町村名を入れる欄)に以下を設定する。
    ①「セルの入力規則」(Alt⇒A⇒V⇒V)で以下を入力(選択)する。
    ・入力値の種類:リスト
    ・元の値: =$B:$B

    画像
    画像

    ⓶ F2セル右の▼(または Alt+↓)クリックで、該当の都道府県の市町村が表示される

    画像

    以上

    これで、都道府県×市町村のタテヨコ表がなくても、都道府県選択⇒市町村選択が可能となります。
    ただし、これができるのは1つのセルのみです。
    市町村入力欄が縦に並んでいくような入力様式には不向きです。
    OFFSET関数等を使って適用させる方法もあるようですが、私の苦手分野です。そのやり方もいずれ載せるかもしれませんが、別のやり方もあります。そちらは後日。

    とりあえず「1セル限定」としておきますが、検索等では使えるかと思います。例えば・・・

    例1)XLOOKUP関数で読み方を出す

    画像

    *市町村名(漢字)だけだと、同一のものがあるので選べない。

    画像

    例2)全て取り出す
    市町村名だけでFILTER関数を使うと、同じ漢字の市町村名が括りだされてしまう。

    =FILTER(市町村リスト!A:E,市町村リスト!C:C=入力表!F2)

    画像
    F2の「南牧村」だけをFILTER関数に入れると
    右下の表のように
    他県の同一漢字表記の市町村名も括り出してしまいます

    そのため、都道府県+市町村名とする必要がある。
    =FILTER(市町村リスト!A:E,市町村リスト!B:B&市町村リスト!C:C=入力表!E2&入力表!F2)

    画像
    E2の都道府県名とF2の市町村名を合わせたものを
    FILTER関数に入れると
    その市町村だけが括り出せます
    (同一都道府県内に同一市町村名はないため)

    というわけで、とりあえず1セル限定でどこまで使える場面があるかは分かりませんが、ご参考までに。


    あなたへのおすすめ