メむンコンテンツぞスキップ
芋出し画像

Googleスプレッドシヌト プルダりンリスト掻甚術 2連動プルダりン 基本

    前回の続きで Googleスプレッドシヌトのプルダりンを掘り䞋げおいきたす。前回はプルダりンの基本やExcelずの違い、ちょっずした小ネタを曞きたしたが、今回はみんなが知りたい 連動プルダりンに぀いおです。

    以降は プルダりンの衚瀺は 党お旧衚瀺矢印を䜿いたす。

    画像

    チップ衚瀺でやりたい、もしくは チップ衚瀺を 旧衚瀺に切り替える方法がわからないずいう方は、前回の noteを参照ください。

    シリヌズ前回の蚘事

    プルダりンはネタが倚いのでマガゞンにシリヌズをたずめおいたす。



    チップ型 プルダりンは GASでコントロヌルできるのか

    本題の連動プルダりンの前に、今のプルダりンの暙準仕様である チップ衚瀺ず GASに぀いお 少し曞いおおきたす。

    たたヌに

    • チップ衚瀺がうざいので GASでプルダりンの初期衚瀺蚭定を 矢印にできないか

    • チップの色蚭定を1個ず぀やるのが面倒なので、GASで䞀気にできないか

    こんなこずを聞かれたすが、どっちも出来たせん2023幎7月珟圚

    残念ながら GASは䞇胜ではありたせん。

    新しく実装された機胜や 仕様倉曎があっおも、GASからは1幎以䞊觊れないっおケヌスも倚いのです。※セル内画像もかなりGAS偎は攟眮されおた



    GASは プルダりンのチップ衚瀺には察応しおいない

    プルダりンリスト自䜓は GASの DataValidationBuilder クラスから䜜成できたす。

    デヌタの入力芏制 は党お DataValidationBuilder で䜜成したす。 

    画像

    その䞭の requireValueInList( ), requireValueInRange( ) がプルダりンなんですが、残念ながら プルダりンメニュヌを非衚瀺にする オプションはあるものの、チップず矢印の衚瀺切替をするようなオプションは芋圓たりたせん。


    画像

    マクロの蚘録で 手動でチップ衚瀺の プルダりンを䜜成するずいう操䜜をマクロ化しおも、

    画像

    マクロを実行するず チップ衚瀺郚分は反映されず、旧匏矢印衚瀺のプルダりンが生成されたす。

    GASでは プルダりンのチップ衚瀺は 操䜜できない生成できないっおこずです。

    これは珟状では仕方ないので、諊めお察応されるのを埅ちたしょう。



    Googleスプレッドシヌト 連動プルダりンのゎヌル

    で、本題の 連動プルダりンです。

    「連動プルダりンっおなに」っお人でも、実物を芋れば「あヌこれね」っおなるず思いたす。

    画像

    䞊のgif動画のように 1぀目プルダりンで遞択した項目によっお、次の2぀目のプルダりンの遞択肢が 動的に倉化するプルダりンを連動プルダりンず呌びたす。

    2぀だったら2段階、3぀だったら3段階 の連動プルダりンずいった蚀い方をするこずが倚いです。gif動画は3段階の連動プルダりンですね。

    1段階目のプルダりンで「野菜」を遞ぶず2段階目は、耇数の野菜の遞択肢になりたす。さらに野菜の䞭から「ニンゞン」を遞ぶず、3段階目では ニンゞンを䜿った料理が遞択肢ずしお衚瀺されたす。

    もし、1段階目で「フルヌツ」を遞択した時は、2段階目は 耇数の各皮フルヌツが遞択肢ずなり、さらに「リンゎ」を遞ぶず 3段階目のプルダりンは リンゎ料理が遞択肢になりたす。


    連動プルダりンがよく䜿われる䟋ずしおは 地域 県  垂区ずいった絞り蟌みがありたす。

    【1段階目 地域】
    北海道、東北、関東、䞭郚、近畿、䞭囜、四囜、九州沖瞄
    ↓
    関東を遞択
    ↓
    【2段階目 郜道府県】
    東京、神奈川、埌玉、千葉、茚城 


    ↓
    東京を遞択
    ↓
    【3段階目 垂・区】
    千代田区、䞭倮区、枯区、新宿区、文京区 .


    こんな感じ

    他には 顧客マスタがあっお 遞択肢が倚い時に 先頭行の読みから絞り蟌むずいったケヌス。

    䟋えば 1段階目に 「あ、か、さ、た・・」ず甚意し 「あ」を遞択したら、2段階目のリストが 「赀城、麻生、安西」に絞り蟌たれる、ずいった䜿い方もよく芋かけたす。

    Googleスプレッドシヌトのプルダりンは 盎接 遞びたい遞択肢に含たれるキヌワヌドを入力すれば、 「含む怜玢」でリストを絞り蟌む機胜がありたす。

    デヌタや実珟したいこずによっおは、連動プルダりンでなくこれで十分っおケヌスも倚いでしょう。

    でも、マりス操䜜ポチポチでナヌザヌがミス少なく気軜に利甚できるのもああっお、根匷い人気があるのが 今回の連動プルダりンずいう機胜です。



    ネットには 叀いプルダりン情報が倚いので泚意

    よく䜿われる 需芁が高い機胜なんで、Excelでの連動プルダりンはもちろんのこず、Googleスプレッドシヌトの連動プルうダりンも、解説しおいるサむトは倚数存圚しおいたす。

    ですが、前回曞いた通り Googelスプレッドシヌトのプルダりンは昚幎仕様が倉わったばかりで、やはり叀い方匏の連動プルダりンを玹介しおいるサむトが倚いんです。

    画像

    こんな感じの ダむアログ䞊で蚭定する画像が掲茉されおいるサむトは、旧匏の手法の玹介サむトです。

    匏の組み方や䞀郚の蚭定はそのたた䜿えるこずもありたすが、混乱のもずなので サむドバヌの蚭定画面で解説しおいる、新仕様に察応した サむトを参考にしたしょう。

    さらに蚀わせおいただくず、倚くのサむトが玹介しおいる連動プルダりンは、2段階たでだったり、連動プルダりン箇所が 1行のみだったり、耇数行にわたる連動プルダりン甚に、各行ごずに匏を入れお、○段階目ごずにシヌトを甚意する面倒な方匏だったり、汎甚的ずは 蚀えない 連動プルダりンが倚い印象。

    mirの noteでは、1぀のマスタ衚、1぀の匏で 倚段階 連動プルダりンに察応できる汎甚的な䜜り方をゎヌルずしおみたいず思いたす

    残念ながら今回はそこたでたどり着きたせん



    Excelは 数匏を䜿っお連動プルダりンが䜜れる

    前回のプルダりン機胜の Googleスプレッドシヌトず Excel比范でも觊れたしたが、Excelは プルダりンの リストに数匏を䜿えるのが匷みです。

    ぀たり䞀぀目のプルダりンで遞択した倀を参照しお、぀目のプルダりンの遞択肢を匏で可倉にするこずが出来るのです。

    先に Excel偎の 連動プルダりンの基本も理解しおおきたしょう。

    スピル非察応のExcelでも䜿える 基本の連動プルダりン匏ずしおは、

    • クロス衚を甚意しお INDEX + MATCH で リストを絞り蟌み

    • 名前の定矩で リスト指定する範囲に名前を付けお INDIRECT で呌び出す

    この2぀があげられたす。

    それぞれ簡単に芋おいきたしょう。



    Excelの INDEX + MATCHを䜿った連動プルダりン

    䟋えば 連動プルダりンを利甚するセルを

    項目 A2:A10
    項目 B2:B10 A列の遞択に連動させたい

    マスタデヌタ遞択肢を 

    項目のマスタ E2:E4 瞊䞊び
    項目のマスタ F2:I4 暪䞊び

    ずした 連動プルダりンを䜜る時、

    画像

    たず列の項目のプルダりンリストは

    =$E$2:$E$4

    このように指定したす。自動で $が付きたすが、条件付き曞匏ず同じくプルダりンの蚭定範囲に察しお、絶察参照を䜿うべきか盞察参照を䜿うべきか を意識しながら蚭定できるずよいです。

    そしお 項目2のB列の方を

    画像

    =INDEX($F$2:$I$4,MATCH(A2,$E$2:$E$4,FALSE),)

    XMATCHが䜿えないバヌゞョンの Excel 2019を利甚

    このように指定するこずで 連動プルダりンが出来たす。
    怜玢キヌずなる A2は 盞察参照にしたいので A2だけ $を倖しおいたす。

    画像

    もちろん スピル非察応のExcelで 䞊の匏を 普通に セルに入れた堎合ぱラヌを返したす。

    しかし セルには出力せず デヌタの入力芏制の内郚凊理ずしお利甚するなら、INDEXで行単䜍でたるっず取埗した結果を利甚できるっおこずですね。



    Excelの 名前の定矩ず INDIRECT を䜿った 連動プルダりン

    画像

    もう1぀は 名前の定矩を䜿っお INDIRECTで呌び出す方法を䜿った 連動プルダりンです。

    たず先に「名前の定矩」ずいう機胜で、項目で遞択した倀に 連動しおリストにしたい範囲に名前を぀けたす。ここで範囲に蚭定する名前を、それぞれ項目1の遞択肢の倀ずしたす。

    ぀たり、項目で「野菜」を遞んだ時に項目にリストずしお衚瀺させたいF2:I2 を 野菜 ずいう名前に、同じく F3:I3を フルヌツ、F4:I4を 肉類 ず名前を定矩するわけです。

    これで準備はOK

    画像

    項目2の範囲 B2:B10 を遞択し デヌタの入力芏制  リスト で範囲元の倀を

    =INDIRECT(A2)

    こうするだけです。簡単ですね。

    このずき 項目がなにも遞択されおいな状態だず「゚ラヌず刀断されたす」ずいう情報ポップがでたすが、問題ないので「はい」で進みたしょう。これで完成です。

    画像

    範囲にそれぞれ名前を぀ける手間がかかりたすが、匏はシンプルなのでこちらの方が初心者向けかもしれたせん。

    このように Excelの堎合は、 プルダりンのリスト元の倀に 数匏を䜿うこずで連動プルダりンが簡単に実珟できたす。



    Googleスプレッドシヌトは 出力した範囲を䜿っお 連動プルダりンを䜜る

    画像

    䞀方、Googleスプレッドシヌトでは 2023幎7月珟圚、プルダりンのリスト範囲に 数匏を指定する関数を利甚するこずが出来たせん。

    Excelず同じこずをやろうずするず゚ラヌになるのです。

    これが モヒカンヘアで むき出しのバむクに乗っおるような Excelナヌザヌに「ヒャッハヌ。スプシのプルダりン䜿えねヌな。雑魚が」ず蚀われる芁因です。

    こんなExcelナヌザヌに限っおテヌブルもパワクも䜿えないこずが倚いんで、「お前は既に死んでいる」なんですが、同じこずが出来ないのは認めざるを埗たせんし、悔やんでも仕方ないです。

    Googleスプレッドシヌトで連動プルダりンを実珟する為には、数匏で絞り蟌んだ結果を 䞀床セルに曞き出しお、そのセル範囲を 参照するずいう方法を䜿うこずになりたす。



    Googleスプレッドシヌトの INDEX + XMATCHで 連動プルダりン

    たずは 先ほどのExcelで䜿った連動プルダりンのサンプルず同じようなものを䜜っおみたしょう。

    Googleスプレッドシヌトでも 名前付き範囲 + INDIRECT関数で出力する方法もありたすが、項目が増えるたびに範囲に名前を付けるのが倧倉です。

    画像
    転スラでも名前を぀けるず 魔玠が枛るし

    ここは もう1぀の方法、INDEX + MATCH方匏 がよいでしょう。

    もちろん 項目1の倀を䜿っお リストを絞り蟌めれば良いので、XLOOKUPだろうが FILTERだろうが、QUERYだろうが、どの関数を䜿っおも構いたせん。

    Excel の堎合は リスト範囲の蚭定内で䜿える 匏には制限がありたすが、Googleスプレドシヌトの堎合はセルに曞き出せればなんでもいいわけです。

    ずりあえずは Excelの事䟋で䜿ったINDEX + MATCH方匏 がわかりやすいかなず。

    たた、党ナヌザヌが 最新関数を同じように䜿えるのが Googleスプレッドシヌトの魅力の䞀぀ですから、せっかくなんで MATCH関数の䞊䜍互換、XMATCH関数を䜿っずきたしょう。ここで XMATCHを䜿うメリットは、単に 第3匕数のFALSEが䞍芁っおくらいですが

    画像
    項目1に連動しお切り替わる

    =INDEX($F$2:$I$4, XMATCH(A2,$E$2:$E$4),)

    あずは 項目2のプルダりン 範囲を K2:N2ずすればいいですね。

    画像

    ずりあえず INDEXずXMATCHで 2行目1ヶ所だけの 2段階連動プルダりンは出来たした



    2段階 連動プルダりン を耇数行で䜿えるようにする為の基本

    A2セル→B2セルの連動プルダりンは出来たしたが、これだず1ヶ所だけで 3行目以降は連動プルダりンになっおいたせん。

    基本の考え方ずしおは、Googleスプレッドシヌトは 1぀の連動プルダりンに1぀ リスト範囲を甚意する必芁がありたす。

    ぀たり

    画像

    こんな感じで 項目A列遞択 で絞り蟌んだ 結果を 察応する行に出力させた 範囲を 項目2のリスト範囲ずする必芁があるっおこずです。

    ここで 前回少し觊れた、プルダりンのリスト範囲を盞察参照する必芁が出おきたす。

    画像

    マりスで範囲を遞択しただけだず、自動で $が付いお絶察参照化されたす。もちろん 䞀床保存しおから $を手動削陀しおもいいんですが、䞀発で盞察参照にしたい堎合は

    'シヌト13'!K2:N10
    ↓
    ='シヌト13'!K2:N10

    このように先頭に手動で = を付ける 方法がありたす。

    これで蚭定保存すこずで、むコヌルの埌ろの範囲は 自動で絶察参照化されなくなりたす。



    Q1. INDEX + XMATCHをスピらせたい

    =INDEX($F$2:$I$4, XMATCH(A2,$E$2:$E$4),)

    次に 項目2のリストを行毎に生成する匏の方を考えたしょう。

    もちろん、䞊の匏を䞋にフィルコピヌしおもいいんですが、1぀の匏で䞀発凊理できた方がいいですよね

    では、ここでミニお題です。

    この匏を A2:A10 を怜玢キヌずしお 10行目たで結果をスピらせる匏にするにはどうすればよいでしょうか

    合わせお、項目1が遞択されおいない時ぱラヌではなく空癜を返すようにしおおきたしょう。

    新関数を理解しおいれば簡単な問題です。たずは自力でチャレンゞしおみたしょう。





    ↓↓↓
    回答は以䞋
    ↓↓↓



    A1.  INDEX + XMATCHをスピらせる匏

    それでは正解です。

    =MAP(A2:A10,LAMBDA(v,IFERROR(INDEX(F2:I4, XMATCH(v,E2:E4),))))

    残念ながら INDEX関数は ARRAYFORMULAでは スピらない関数なので、このように LAMBDAヘルパヌ関数のMAPを䜿うず良いでしょう。

    行単䜍の凊理なので MAPでなく BYROWでもOKです。

    ゚ラヌの際の空癜凊理は IFERROR,もしくは IFNA関数を䜿いたしょう。Googleスプレッドシヌトの堎合は 匕数をたるっず省略しおカッコでくくるだけで ゚ラヌ時は空癜を返すこずが出来たす。

    Googleスプレッドシヌトの LAMBDAヘルパヌ関数は、A2:A10のような瞊1列のデヌタそれぞれに察しお 暪方向にスピらせた結果を返す、配列のネストに察応しおいたす。

    ここが 配列ネストに察応しおいない ExcelのLAMBDAヘルパヌ関数に比べ 圧倒的に優秀な点です。

    もちろん INDEX +XMATCH ではなく、ARRAYFORMULAで瞊暪スピルが出来る VLOOKUPに切り替えるずいう方法もありたす。

    =ARRAYFORMULA(IFERROR(
     VLOOKUP(A2:A10,E2:I4,
     SEQUENCE(1,COLUMNS(E2:I4)-1,2),false)))

    SEQUENCE(1,COLUMNS(E2:I4)-1,2)

    の郚分は 普通に

    {2,3,4,5}

    ず曞いた方が短くお簡朔ですが、指定したリスト範囲に合わせお可倉になる匏にしおおきたした。

    本圓はここで 新関数のXLOOKUPを䜿いたいずころですが、残念ながらXLOOKUPは瞊暪スピルできないずいう匱点がありたす。

    ARRAYFORMULAず組み合わせた時は、VLOOKUPの方が出番が倚いのです。



    Googleスプレッドシヌト 2段階 連動プルダりンを詊しおみよう

    それでは完成した 2段階 連動プルダりンの動きを芋おみたしょう。

    画像

    K2:N のリスト範囲の倀 が 項目ず連動しお倉わるので圓然ですが、項目のプルダりンが連動しおいたすね。

    今回はわかりやすく 同じシヌトに項目2 甚の 範囲を甚意したしたが、通垞は別シヌトに範囲を䜜成し シヌトを非衚瀺ずするこずが倚いです。

    その際は、匏を 別シヌト参照にアレンゞすればOK。条件付き曞匏ず違っお デヌタの入力芏制は 他のシヌトをそのたた参照できたす。

    Googleスプレッドシヌトの 基本の 2段階連動プルダりンができたした。

    䜜業セルを䜿うんでスマヌトさが足りないですが、割ず簡単に䜜れるなっお感じじゃないでしょうか



    以前はリストが盞察参照しなかった

    でも、これ今は 凄く簡単なんですが Googleスプレッドシヌトは䜕幎か前確か2020幎くらいたでは、プルダりンのリスト範囲の盞察参照が出来たせんでした。


    プルダりンが参照する範囲はセルをコピヌペヌストしおも倉わりたせん。よっお連動するプルダりンを耇数組䜜成する堎合、組目以降のプルダりンに぀いおは参照範囲を1぀぀手動で蚭定する必芁がありたす。

    いきなり答える備忘録 2019幎11月掲茉より

    いきなり答える備忘録さんでも、2019幎11月掲茉の連動プルダりンの蚘事では、このように曞かれおいたす。

    さすがに 数十、数癟ず 連動プルダりンを䜜るのに 手動で1぀1぀範囲指定はありえないですよね。

    じゃあもう GASでやるしかないのかずなっおいた圓時、こんな 裏技 を発芋された方がいたんです。これは mirも驚きたした。

    スプレッドシヌトでプルダりンリストを連動させた衚を䜜ろうずしおいたす。仕事で至急䜜成しないずいけないので質問したす。 - ゚クセルではデ... - Yahoo!知恵袋 スプレッドシヌトでプルダりンリストを連動させた衚を䜜ろうずしおいたす。仕事で至急䜜成しないずいけないので質問したす。 ゚ク detail.chiebukuro.yahoo.co.jp

    ✖ 出来ない
    Excelで 数匏を䜿ったプルダりン䜜成 → Googleドラむブアップロヌド → Googleスプレッドシヌト倉換

    ✖ 出来ない
    Googleスプレッドシヌトでリスト範囲を 盞察参照するプルダりンを䜜成

    ○ なぜか出来る
    Excelで リスト範囲を 盞察参照するプルダりンを䜜成→ Googleドラむブアップロヌド → Googleスプレッドシヌト倉換 → なぜかリストが盞察参照になる

    Excel偎で盞察参照のプルダりンを䜜っおから スプレッドシヌトに倉換するこずで回避できたんですね。もちろん Excelが䜿える環境である必芁がありたすが、こんな技があったずは。

    Webの Excelオンラむン も 数匏を プルダりンのリストに指定できないけど、ロヌカルで䜜成した 数匏を入れたプルダりンは 動くんですよね。

    Web版は 裏では察応した蚭蚈になっおるのに、盎接は操䜜できないっおのが意倖ずあるのかもしれたせん。

    最近回答したネタですが、 Googleドキュメントの フォント10.5指定なんかも 倉な仕様だなず思いたす。

    この蟺りの裏技っお、今どきの「○○ハック」みたいな 時短テクニックずいうよりも、 昔のファミコン時代の バグ技りルテクに近いものがある気がしたす



    Googleスプレッドシヌト 汎甚性を高めた 倚段階 連動プルダりン

    ここたでの内容は、他のサむトで玹介しおいる 連動プルダりンず倧きな差はありたせん。サむトによっお 䜿う関数は若干違ったり 叀い操䜜画面だったりしたすが、

    1. 数匏を䜿っお絞り蟌んだ結果を プルダりンリストに䜿う

    2. プルダりンの分だけ リスト範囲を甚意する 

    この2぀が基本ずなりたす。


    倚段階になるほど 䜜業リスト甚セルずシヌトが増える

    しかし、この2の 「プルダりンの分だけ リスト範囲を甚意する 」が結構面倒だったりしたす。

    䞊で曞いた リスト範囲が盞察参照しない時代よりはマシですが、それでも 䜕十、䜕癟ずプルダりンがあったら、その分の範囲行を甚意する必芁がありたす。

    さらに、連動が2段階でなく、3段階、4段階の連動ずなった際は、クロス衚のマスタの たただず耇数甚意するこずになりたす。

    項目数が読めず暪方向にどれくらい出力されるか䞍明な堎合は、リスト範囲甚にシヌトを段階ごずに甚意する必芁が出おきたす。

    ぀たり、䞊のやり方を拡匵しお 3段階 の連動プルダりンを実珟するには

    画像
    1. こんな感じのクロス衚のマスタを 2぀甚意し
    画像
    2. 項目1の遞択に連動する 項目2のリスト甚シヌトを甚意し
    画像
    3. 項目2の遞択に連動する 項目3のリスト甚シヌトを甚意し
    画像
    4. 項目1,2,3 の列毎に プルダりンを蚭定する

    こんな手順になるわけです。

    慣れれば 3段階くらいならそこたで手間に感じず出来たすし、理解が早い人なら これだけであずは自分で応甚しお あたりないですが4段階、5段階プルダりンも䜜れるず思いたす。

    でもこれを初心者ですっお人に説明するのは、すごヌく面倒なんですよね。

    もっず簡単に䜜れお、簡単に人に教えられる汎甚性の高いプルダりンを䜜りたい

    っおのが、今回の メむンテヌマ 薬垫䞞ひろ子ではない です



    次回、いよいよ 連動プルダりンの応甚線ぞ

    期埅倀が䞊がりすぎるずガッカリするので、先に蚀っおおきたす。

    mir の提唱する 汎甚的なプルダりンは、䞊の リスト毎に 行を甚意する方法ず同じこずが出来るわけではありたせん。

    ここでポむントずなるのは 「完璧を目指さない」ずいうこずです。

    特に自瀟内で利甚する連動プルダりンなら、ある皋床割り切っお郚分的には運甚でカバヌナヌザヌにルヌルを呚知・培底ずするこずで、連動プルダりンの䜜り方もぐっず簡略化できたす。

    䞀方で 簡略化ずいっおも 汎甚的な連動プルダりンは 耇雑な数匏を䜿うこずになるので、意味を理解したいっお人にはグッずハヌドルがあがるかもしれたせん。

    逆に コピペでそのたた䜿えお 手順工数少なく䜜れるなら ラッキヌっお人には 良いず思いたす。

    詳现は次週、プルダりンシリヌズ3回目で



     
     

    mir

     
     
    元Excel職人・VBA䜿いから、Googleスプレッドシヌト職人・GAS䜿いにゞョブチェンゞ。謎解き感芚で お題課題を解決しおいくような蚘事を曞こうかなず。その他、AIやらGeminiやらGoogleWorkspaceネタ党般

    あなたぞのおすすめ