管理人がみんなに伝えたい!!と思った知識や学びを気ままに書いています(^^)

【脱初心者!】SELECT()関数で依存型ドロップダウンリストを作成する方法

【脱初心者!】select()関数で依存型ドロップダウンリストを作成する方法

本記事はノーコードアプリ開発について全く知らなかった管理人が独学で勉強し、ここ大事!と感じた部分を記事にまとめています。

本ブログでは新UI画面で内容をまとめています。

新旧画面への切り替えは、下図を参考に該当アイコンをクリックしてください(^^)

新UI画面の説明

まずはじめに

本記事はこんな人におすすめ!!
  • SELECT()関数の応用を学びたい人
  • 直前に入力したデータの値によって続く入力値を動的に変えたい人
本記事を読んで出来るようになること
  • Valid ifとSELECT()関数を組み合わせることで完成度の高いアプリが作成できる
  • [_THISROW]を使う関数の条件式の考え方が理解できる

今回は、当ブログ記事の中でも特に人気の高いSELECT()関数を、さらに深く掘り下げていきます。

AppSheetで何か困った時、「とりあえずSELECT()関数を使ってみよう」と言われるほど、その汎用性は抜群です。

この記事では、そんなSELECT()関数の理解をさらに深めるために、応用例として「依存型ドロップダウンリスト」の作成方法を解説します。

依存型ドロップダウンリストとは、直前に入力したデータ(選択肢)によって、次に表示される入力値(選択肢)が動的に変わる仕組みのことです。

例えば、「都道府県」を選ぶと、その都道府県内の「市区町村」だけがリストに表示される、といった便利な機能ですね。

なるべく分かりやすくまとめたつもりなので、ぜひ皆さんのアプリ開発の参考にしてください。

それでは勉強していきましょう!

本記事を読む前にこちらの記事内容を理解しておきましょう

参考記事

検証用シートのご紹介

最初に、今回の記事で依存型ドロップダウンリストの作成に使用するデータをご紹介します。

テーブルの構成
注文シート

このシートは、Valid if設定にSELECT()関数を入力した際の挙動を確認するために作成しました。

注文シート

このシートの各カラムは、以下の役割を持っています。

  • ID: 各行を一意に識別するためのキー値です。
  • 商品名、サイズ、価格: これらは、後ほどメニューからリストとして選択できるように設定するカラムです。
メニュー

このシートは、注文シートへ選択肢のリストを供給するために使用します。

メニュー

このシートの各カラムは、以下の役割を持っています。

  • ID: 各行を一意に識別するためのキー値です。
  • 商品名、サイズ、価格: これらは、後ほど注文シートへ選択肢としてリストを送るために使用するカラムです。

それでは、これらのデータをAppSheetに読み込み、関数の入力と動作の検証を行っていきましょう。

ここで一つ重要なポイントがあります。

データを送るシート(供給元)と、データを受け取るシート(注文シートなど)のカラム名を同じにしておくことです。

このように設計しておくことで、本記事で解説する内容を、皆さんが作成するどんなAppSheetアプリにも応用しやすくなります。ぜひ参考にしてください(^^)


データタイプRefでは成立しない?その疑問を解消!

SELECT()関数の検証に入る前に、もしかすると読者の皆さんの中に「Ref(参照)データタイプを使えば良いのではないか?」と疑問を持たれた方もいらっしゃるかもしれませんね。

この疑問に対して、まず結論からお伝えします。

Refデータタイプは、参照元と参照先のデータが「1対1」の関係であれば適切に機能します。

しかし、今回の依存型ドロップダウンリストのように、一つのデータ(例: 商品名)に対して複数の関連データ(例: サイズ)が存在する「1対多」の関係の場合には、Refデータタイプだけでは実現できません。

そのため、今回はSELECT()関数を用いて、この「1対多」の関係に対応する依存型ドロップダウンリストの作成方法を解説していきます。

具体例を見てみましょう。

ref関係の概念

上図の「◯パターン」で示されているように、同じ商品名に紐づく情報が一つしかない場合は、Refデータタイプでデータのリレーションを持たせることが可能です。

しかし、「✕パターン」を見ると、同じ商品名(例:カレーライス)に対して、異なるサイズとして複数の情報が紐づいています。

この状態で無理にRef関係を結ぼうとすると、AppSheetの画面上では「カレーライス」の選択肢が複数(この場合は3つ)出現してしまい、UI低下の原因となってしまいます。

これが、「1対多」の関係でRefデータタイプが適さない理由です。

SELECT()関数を使うことで、この問題をスマートに解決し、意図したとおりの依存型ドロップダウンリストを実現します。

ref画面の例
「✕パターン」の画面

このような設定では、データを入力するユーザーが混乱してしまいます。

したがって、「1対多」の関係になる場合には、Refデータタイプを使用しないのが賢明な選択と言えるでしょう。

データタイプRefについて深く学びたい人はこちら

参考記事

入力値に連動するドロップダウンリストの作成

ドロップダウンリストのイメージ

それでは、上図のような「入力値によって、次に続く入力値のリストが動的に変更される」仕組みを作成していきましょう。この設定方法は汎用性が高く、私自身もこれまで困ったことがないため、ぜひ皆さんにも参考にしていただきたいです。

まず、設定の全体的な流れを先に説明し、その後に各ステップのポイントを詳しく解説していきます。

商品名カラムにリストを設定する
unique関数の入力


まず、「商品名」カラムのValid if設定に、以下の関数を入力します。

UNIQUE(メニュー[商品名])

UNIQUE()関数とは?

UNIQUE()関数は、括弧の中に指定されたリストの中から重複する値を除外し、ユニークな値だけのリストを返す関数です。

今回の例では、メニュー[商品名](「メニュー」シートの「商品名」カラムにあるすべてのデータ)をUNIQUE()関数に渡すことで、重複しない商品名のリストだけが「商品名」のドロップダウンに表示されるようになります。

これにより、ユーザーは重複のないクリーンな選択肢から商品を選ぶことができます。

サイズカラムのValid ifにSELECT()関数を入力する
サイズを抽出するselect関数

次に、「サイズ」カラムのValid if設定に、いよいよ本命のSELECT()関数を入力します。

SELECT(メニュー[サイズ],[商品名]=[_THISROW].[商品名])

このSELECT()関数がやっていること

このSELECT()関数は、以下の二つの引数を使って、選択された「商品名」に応じて「サイズ」のリストを動的に絞り込んでいます。

  • メニュー[サイズ]

これは、SELECT()関数でリストとして取得したい「サイズ」カラムの全データを指します。

つまり、「メニュー」シートにあるすべての「サイズ」の選択肢を候補として考えます。

  • [商品名]=[_THISROW].[商品名]

ここが依存型ドロップダウンリストの肝です。

  • [商品名]:「メニュー」シート(データの供給元)の「商品名」カラムを指します。
  • =:比較演算子で、両辺が等しいかを確認します。
  • [_THISROW].[商品名]:現在入力中のフォームで、すでにユーザーが選択した「商品名」の値を指します。
価格カラムのInitial ValueにANY()とSELECT()関数を設定
initial valueの関数

最後に、「価格」カラムのInitial Value(初期値)に、以下の関数を入力します。

ANY(SELECT(メニュー[価格],AND([商品名]=[_THISROW].[商品名],[サイズ]=[_THISROW].[サイズ])))

この式は、ユーザーが選択した「商品名」と「サイズ」に基づいて、該当する「価格」を自動的に取得し、初期値として設定します。

その際、フィルター条件式としてAND()関数を使用し、複数の条件を同時に満たす行を絞り込みます。具体的には、

  • 「メニュー」シートの「商品名」が、現在フォームで選択されている「商品名」と一致
  • 「サイズ」が、現在選択されている「サイズ」と一致

この条件に合致する「価格」のリストが返されます。

通常、この組み合わせであれば抽出される価格は一つだけ(リストに要素が一つ)になる想定です。

ANY()関数

ANY()関数は、引数に渡されたリストから任意の1つの値を取り出す関数です。

  • SELECT()関数が返した「価格」のリストは通常1つの値しか含まないため、ANY()を使うことでその唯一の値を確定させ、「価格」カラムの初期値として設定できます。
  • この設定により、ユーザーが「商品名」と「サイズ」を選択すると、それに紐づく正しい「価格」が自動で入力されるため、入力の手間が省け、誤入力も防ぐことができます。

設定はこれで完了です!お疲れ様でした。

続いては、なぜ上記の設定で依存型ドロップダウンリストが機能するのか、その仕組みを図を使いながら詳しく解説していきます。


SELECT()関数と[_THISROW].[カラム]の仕組み

まず、SELECT()関数の引数がどのように機能するのか、その基本からおさらいしましょう。

select()関数の引数の渡し方

SELECT()関数は、大きく分けて二つの引数を受け取ります。

  • 第一引数: 検索対象となるリスト(どのデータ群から情報を取得するか)を指定します。
  • 第二引数: そのリストの中から、どのような条件でデータを絞り込むかを示すフィルター条件式を指定します。

今回の記事で「サイズ」カラムに設定した関数、SELECT(メニュー[サイズ], [商品名] = [_THISROW].[商品名])を例に、この考え方を掘り下げていきましょう。

第一引数:取得したいリストの指定
関数の考え方

まず、SELECT()関数の第一引数で、「どのリストを取得したいのか」を明確にします。

今回のケースでは、注文シートの「サイズ」カラムに表示したいリストは、メニューシートにある「サイズ」カラムの値です。

そのため、第一引数にメニュー[サイズ]と入力することで、SELECT()関数はメニューシートのC列(サイズ)を検索対象として認識し、そこからデータを取得しようとします。

メニュー[サイズ]のリスト
直前の選択に連動する情報の取得

次に考えるべきは、注文シートでユーザーが選択した「商品名」に紐づく「サイズ」情報のみを、ドロップダウンリストに表示させる方法です。

例えば、注文シートで「カレーライス」を選択した場合、下図で緑色に塗られたセルの情報(カレーライスのサイズ)だけが欲しい、ということになります。

この「対象となるリスト(メニューシートのC列)から、抽出条件に該当するリストを作成する」という処理は、まさにSELECT()関数が得意とする領域です。

カレーライスの選択肢
第二引数:フィルター条件式の考え方
select()関数とthisrow

それでは、SELECT(メニュー[サイズ],[商品名]=[_THISROW].[商品名])における、第二引数のフィルター条件式について詳しく見ていきましょう。

この条件式を理解するには、以下の3つのポイントが重要です。

SELECT()関数の「フォーカス」

第一引数にメニュー[サイズ]のリストを送ると、SELECT()関数はまず「メニュー」シートにフォーカスし、その中のデータを検索対象とします。

二つのシートの区別

第二引数には、SELECT()関数が参照しているメニューシート(データ供給元)と、現在関数を入力している注文シート(データ入力先)の情報を区別して渡す必要があります。

SELECT()関数が、「どこにある、どのデータ」と「今入力している、このデータ」を正しく比較できるよう、指示してあげるイメージです。

[_THISROW].[カラム名]の活用

この「参照先」と「入力先」の区別を可能にするのが、メニューシートの[商品名]と、注文シート(現在入力中の行)の[_THISROW].[商品名]です。

  • [商品名]:SELECT()関数がフォーカスしているメニューシート内の「商品名」カラムを指します。
  • [_THISROW].[商品名]:現在AppSheetのフォームでユーザーが入力中の行(_THISROW)における「商品名」カラムの値を指します。

つまり、[商品名]=[_THISROW].[商品名]という条件式は、

「メニューシートのこの行の『商品名』は、今あなたが入力しているフォームの『商品名』と同じですか?」という質問をAppSheetに投げかけ、TRUE(同じ)かFALSE(違う)で判断させています。

この仕組みによって、選択された商品名に連動するサイズのみがリストとして表示されます。


ANY(SELECT())関数と「価格」カラムの仕組み

「価格」カラムに設定したANY(SELECT())関数についても、基本的な考え方は「サイズ」カラムの場合と変わりません。SELECT()関数の第二引数であるフィルター条件式が少し複雑になっているだけと捉えてください。

ここで実現したいのは、下図に示すようなデータの紐づきです。

価格カラムの設定イメージ
データのイメージ

今回は、上図のようなテーブル構造を用いて説明します。

このデータのイメージからお分かりのように、「商品名」と「サイズ」が決定すれば、「価格」は必ず一意の値を取ります。

つまり、「商品名」と「サイズ」の組み合わせに対して、対応する「価格」は一つに決まります。

このようなケースでは、ANY(SELECT())関数を用いることで、求めている「価格」を自動的に取得し、問題をすべて解決できます。

今回の記事で「価格」カラムに入力した関数、ANY(SELECT(メニュー[価格],AND([商品名]=[_THISROW].[商品名],[サイズ]=[_THISROW].[サイズ])))の考え方は、以下の流れで理解するとスムーズです。

第一引数:取得したいリストの指定
価格リストの検討

つまり、注文シートの「価格」カラムに表示させたいリストは、メニューシートの「価格」カラムの値です。

したがって、第一引数にメニュー[価格]と入力することで、SELECT()関数はメニューシートのD列(価格)を検索対象として設定していることになります。

メニュー[価格]のリスト
直前の選択に連動する価格情報の取得

次に考えるべきは、注文シートでユーザーが選択した「商品名」と「サイズ」に紐づく「価格」情報を、初期値として自動的に取得する方法です。

例えば、注文シートで「カレーライス」を「普通サイズ」と選択した場合、対応する価格は600円、また「大盛りサイズ」と選択した場合は800円といった具体的な価格を自動で表示させたい、ということです。

データのイメージ

この「対象となるリスト(メニューシートのD列)から、複数の抽出条件に合致するリストをSELECT()関数で作成し、その中から一意の値としてANY()関数で取得する」という流れで実現します。

第二引数:フィルター条件式の考え方

それでは、ANY(SELECT(メニュー[価格],AND([商品名]=[_THISROW].[商品名],[サイズ]=[_THISROW].[サイズ])))という関数における、第二引数のフィルター条件式について解説します。

この条件式の考え方は以下の通りです。

SELECT()関数の「フォーカス」:
第一引数にメニュー[価格]のリストを送ることで、SELECT()関数はメニューシートにフォーカスし、その「価格」カラムからデータを検索しようとします。

複数の条件をANDで結合:
今回は「商品名」と「サイズ」という二つの条件が同時に満たされる必要があります。この複数の条件を組み合わせるために、AND()関数を使用します。

  • [商品名]=[_THISROW].[商品名]:これは、メニューシート内の「商品名」が、現在フォームで選択されている(_THISROW)「商品名」と一致するかどうかを判断
  • [サイズ]=[_THISROW].[サイズ]:同様に、メニューシート内の「サイズ」が、現在フォームで選択されている(_THISROW)「サイズ」と一致するかどうかを判断

合致する一意の値の抽出:
AND()関数によって結合されたこの条件式は、「メニューシートの中で、現在選択されている商品名とサイズの両方に完全に一致する行」だけを特定します。そして、SELECT()関数はその行の「価格」をリストとして返します。この条件であれば、通常、リストに含まれる価格は一つだけになります。

ANY()による値の確定:
SELECT()関数が返した単一の要素を持つリストから、ANY()関数がその唯一の値を抽出し、「価格」カラムの初期値として設定します。

any(select))関数の考え方

この仕組みによって、ユーザーが商品名とサイズを選択するだけで、対応する正しい価格が自動的に入力される、非常に便利な機能が実現できます(^^)


関数の検証:実際の挙動を確認しよう!

効果の検証

さて、これまでの設定で入力した関数が、AppSheetの画面上で実際にどのような挙動を示すのか確認してみましょう!

以下の例をご覧ください。

カレーライスを選んだ場合

「商品名」で「カレーライス」を選択し、次に「サイズ」で「普通」を選択した場合

カレーライス普通を選んだ場合

「価格」カラムには、自動的に「¥600」が取得されて表示されます。

同じく「商品名」で「カレーライス」を選択し、次に「サイズ」で「大盛り」を選択した場合

カレーライス大盛りを選んだ場合

「価格」カラムには、自動的に「¥800」が取得されて表示されます。

ハンバーグを選んだ場合

「商品名」で「ハンバーグ」を選択し、次に「サイズ」で「200g」を選択した場合

ハンバーグ200gを選んだ場合

「価格」カラムには、自動的に「¥800」が取得されて表示されます。

同じく「商品名」で「ハンバーグ」を選択し、次に「サイズ」で「300g」を選択した場合

ハンバーグ300gを選んだ場合

「価格」カラムには、自動的に「¥1000」が取得されて表示されます。

ドリンクを選んだ場合

「商品名」で「ドリンク」を選択し、次に「サイズ」で「小」を選択した場合

ドリンク小を選んだ場合

「価格」カラムには、自動的に「¥150」が取得されて表示されます。

同じく「商品名」で「ドリンク」を選択し、次に「サイズ」で「中」を選択した場合

ドリンク中を選んだ場合

「価格」カラムには、自動的に「¥250」が取得されて表示されます。

同じく「商品名」で「ドリンク」を選択し、次に「サイズ」で「大」を選択した場合

ドリンク大を選んだ場合

「価格」カラムには、自動的に「¥400」が取得されて表示されます。

このように、ユーザーの選択に応じて価格が動的に変化することが確認できます。

この仕組みは、データの入力ミスを防ぎ、UIを大幅に向上させます。


まとめ

今回は、AppSheetで非常に便利な依存型ドロップダウンリストの作り方について解説しました。

この機能を実現するには、AppSheetの中核をなすSELECT()関数を使いこなすことが絶対条件となります。

SELECT()関数は、AppSheetでアプリ開発をする上で避けては通れない、まさに中心的な存在です。

本記事を通じて、SELECT()関数、そしてValid ifやInitial Valueといった設定項目への理解がさらに深まっていただけたら幸いです。

Valid ifについて学べる記事を用意しました

参考記事

記事内容について何かありましたらページ下にあるコメント欄からコメントをお願いします。

わかりにくかった部分や間違った情報などご指摘いただけると嬉しいです!

勉強お疲れさまでした(^^)

14 COMMENTS

はな

初めてコメントさせて頂きます。
今回のselect()関数で依存型ドロップダウンリストを作成する方法大変参考になりました。
1点教えて頂きたい事があります。
select(メニュー[サイズ],[商品名]=[_thisrow].[商品名])で紐づいたサイズは出せるのですが
サイズの種類が増えた場合リストの順番がバラバラになってしまいます。
例えばハンバーグを選択後、100g、200g、300g、400g、500gと表示されてほしいところ100g、300g、200g、500g、400gとなってしまいます。これをリスト通り順番に表示させることは可能でしょうか? よろしくお願いします。

返信する
k

コメントの確認が遅れてしまい申し訳ございません!
このブログではany(select())関数を用いて一意の値を取得する方法でまとめましたが、select()関数をSuggested valuesに置くことでリストとして選択肢を返したいとのことですね。

関数から返ってくるリストの値を並び替えたい場合は、sort()関数を使用します。
select(メニュー[サイズ],[商品名]=[_thisrow].[商品名])をsort()でくくってあげてください。

つまり、sort(select(メニュー[サイズ],[商品名]=[_thisrow].[商品名]))
これでリストを昇順に並び替えることが可能です(^^)

返信する
やす

初コメント致します。
最近勉強し始めてとても参考になります。
質問なのですが
any(select(メニュー[価格],and([商品名]=[_thisrow].[商品名],[サイズ]=[_thisrow].[サイズ])))
を使用して新規にカラムを追加することは出来たのですが、すでにあるカラムを編集した場合は機能しないです。
これは仕様なのでしょうか?
間違って登録したデータを修正した場合any関数を使った項目は変化しないため修正に苦労しています。なにか方法はあるのでしょうか?

返信する
k

コメントありがとうございます(^^)
any(select())関数を、価格カラムのInitial valueに入力していると思います。
Initial valueは「初期値」を意味するので、新規にデータを登録(Add)の時には機能しますが、一度登録したデータを更新(Edit)する時には機能しません。
これを解決する方法としては、以下の方法があります。

1.Initial valueではなく、App formulaに関数を入力する
※ただし、関数を入力した価格カラムの編集ができなくなります。

2.Update Behavior → Reset on edit?にチェックを入れる
※ただし、Editを開くたびに価格カラムの値は初期化されます。

データの入力者が、価格カラムを編集する必要がない場合は、1がおすすめです。

2はカラム値の初期化に条件を持たせることが可能です。
例えば、[_thisrow_before].[商品名]<>[_thisrow_after].[商品名]と入力すれば、
商品名を更新すると価格カラムが更新されますが、サイズを更新しても価格カラムは更新されません。

返信する
GENKI

APPSHEET初心者です。よろしくお願い致します。

似た質問になってしますのですが、
Suggested valuesにsort(select(メニュー[サイズ],[商品名]=[_thisrow].[商品名]))
を置いた場合、商品名の五十音順になりますが、
例えば、メニューシートに商品コードというカラムがあった場合、
商品コード順に並び替えるにはどうしたら良いでしょうか?

よろしくお願い致します。

返信する
B.B

初コメントさせて頂きます。
上記のはなさんのように私もリストの順番がバラバラになってしまいます。
sort()でくくってみましたが少し変わるだけでスプレッドシート通りの順序になりません。
何か方法はありませんか?

返信する
k

並べたいリストは日本語でしょうか?
B.Bさんのカラム構造が分からないため、最適設定については分かりませんが解決策を2つ書いておきます(^^)

1つ目の案は、sort()関数で並べるリストの前に1,2,3やa,b,cといった数字やアルファベットを入れる です。リストの値を更新していいのであれば、この設定が簡単です。

2つ目の案は、リストのマスターを作ってソートをかけるです。
以下の手順を参考にしてください。(例は会社名をソートするイメージ)

1.スプレッドシートに会社名を並べた新規シートを用意する(シート名はリスト、カラム(Key値)は会社名とします)
2.順番を並べたいカラムに、orderby(リスト[会社名],[会社名],false)と入力
この関数で、リストシートにある会社名を昇順でリスト化することができます。

orderby()関数は、第一引数にkey値のリスト、第二引数に並び替えをするときの参照カラム、第三引数にtrue(降順)、false(昇順)という使い方をします。

この設定でも解決できなかった場合は、再度コメントをしていただくか、画面上もしくは下にあるお問い合わせからご連絡ください。

返信する
B.B

返信が遅くなり申し訳ありません。
1つ目のやりかたで出来ました。
ありがとうございました。
また困ったことがあれば相談させてください。

返信する
k

GENKIさん、コメントありがとうございます。
念のため確認をしますが、やりたいことは依存型ドロップダウンリストの話(例えば、メニューシートにある商品コードと同じもの)でよろしいでしょうか?

上記の括弧の話であれば、sort(select(メニュー[サイズ],[商品コード]=[_thisrow].[商品コード]))でいけると思います。

単純にSuggested valuesにリストを送り、選択肢を与えたいだけなら
1.メニュー[商品コード]
2.sort(メニュー[商品コード])
3.orderby(メニュー[商品コード],[商品コード],false)
このあたりが候補になるかと思います(^^)

返信する
GENKI

Kさん。お忙しい中、回答ありがとうございます。
返信する場所が間違っていました。
はなさんの質問に返信したつもりでした。

Suggested valuesにsort(select(メニュー[サイズ],[商品名]=[_thisrow].[商品名]))
この場合だとサイズのプルダウンはサイズの五十音順になるかと思いますが、
サイズに紐付けられている商品コードの順でサイズのプルダウンを表示したいのです。
応用して住所入力に使えたらと考えています。

市区町村テーブル
団体コード  都道府県  市区町村
011002     北海道  札幌市 
012025     北海道  函館市
市区町村の五十音順ではなく団体コード順で市区町村のプルダウンを表示させたい。

このコードは総務省で配布しているので少し加工が必要ですが
全国の市区町村が記載されているので、なにかと使えるのではないかと思っています。

refでリレーションしておいたほうが、後々集計などで楽だという記事も見かけますが
まずは練習を兼ねて住所録程度ができればと思っています。

まだ数日しかAPPSHEETを使っていないので
そもそもの理解が違うかもしれませんが、ご了承ください。
まずはおすすめの本を買って勉強しようと思っています。
よろしくお願い致します。

返信する
k

GENKIさん、コメントありがとうございます。
appsheetを触り始めて数日でこの理解力、素晴らしいと思います(^^)
おっしゃるようにrefでリレーションをもたせたほうがいいかもしれませんね。

一例として、以下のような設定でいかがでしょうか?
○市区町村テーブル(シート名):Key値は団体コード
団体コード 都道府県名(漢字) 市区町村名(漢字)
12025 北海道 函館市
11002 北海道 札幌市
12050 北海道 室蘭市
12068 北海道 釧路市
12033 北海道 小樽市
12041 北海道 旭川市

○入力(シート名)
ID(Key値)と市区町村名の2カラムを用意

1.市区町村テーブルのKey値を団体コード、Label値を市区町村名(漢字)にする
2.入力シートのデータカラム:市区町村名をref(市区町村テーブルと)
3.そのカラムのSuggested Valueに以下の関数を入力する
orderby(select(市区町村テーブル[団体コード],true),[団体コード],false)

3の関数を入れる前は、函館市→札幌市→室蘭市→・・・となっていますが、
関数を入力すると、札幌市→函館市→小樽市→・・・となると思います(^^)
※団体コードの数字の昇順に入力リストがソートされます

返信する
GENKI

Kさん
おはようございます。

完璧です!!!
やりたいことができました。
大変助かりました。

これ絶対便利だと思うんですよね。
またなにか分からなくなったら相談させてください。

本当にありがとうございました。

返信する
k

GENKIさん、問題解決できたようで何よりです(^^)
appsheetではリストという概念が結構重要なので、リストをソートするというニーズはありそうですね。
近いうちに今回のコメントの内容を記事にまとめて、TIPSとして保存しておきます!!

返信する
GENKI

Kさん
お疲れ様です。

教えて頂いた関数式で
都道府県名(カラム)で都道府県を選択
市区町村名(カラム)で都道府県で絞られた市区町村が
団体コード順に並び替えられて表示→選択できる。
と思っていたのですが、できていませんでしたwww
すべての市区町村が団体コード順に並び替えられるだけでした。

なので頂いた関数式を参考に
ORDERBY(
select(市区町村テーブル[団体コード],[都道府県名]=[_thisrow].[都道府県名]),
[団体コード],false)
これで解決しました。

よくよく考えたら
orderby(select(市区町村テーブル[団体コード],true),[団体コード],false)
これだと
都道府県名を引数で引っ張ってないので絞り込みなんてされる訳がないですね。

これで住所入力が捗りそうです。
ご報告まで。

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA



reCaptcha の認証期間が終了しました。ページを再読み込みしてください。