在開發 AppSheet 應用時,我們經常會遇到下拉選單(Dropdown)的選項過多的情況,這會讓使用者在尋找資料時感到非常不便。一個絕佳的解決方案就是建立「二層連動選單」:先選擇一個大分類,然後第二個選單只會顯示屬於該分類的選項。
今天,我們將根據影片中的教學,一步步教你如何使用 `FILTER()` 函數,輕鬆實現這個實用的功能。 #### 最終成果展示 我們的目標是:當使用者在「銷售紀錄」表單中,先選擇「銷售類別」(例如 A 或 B),下方的「編號」欄位就會自動篩選出對應的商品。 1. **未選擇類別時**:下方的「編號」選單是空的,避免顯示所有商品造成混亂。 2. **選擇類別 A 時**:編號選單只會列出所有 A 開頭的商品(阿布丁基金系列)。 3. **選擇類別 B 時**:編號選單則會篩選出 B 開頭的商品(香醇滴雞精系列)。 #### 事前準備:資料結構 要實現這個功能,你至少需要兩張資料表: 1. **銷售紀錄表 (Sales Records)**:這是使用者用來填寫資料的表單,包含「銷售類別」和「編號」等欄位。 2. **商品資料表 (Products)**:這是所有商品的清單,作為選項的來源。關鍵在於,這張表的商品資料需要有一個可以被用來分類的依據。在我們的範例中,是透過「編號」的第一個字母(A 或 B)來區分。 #### 步驟一:設定第一層「分類」選單 首先,我們來設定「銷售類別」這個欄位。 1. 進入 AppSheet 編輯器,找到你的「銷售紀錄表」,點擊 `Columns`。 2. 找到「銷售類別」欄位,將其 `TYPE` 設定為 `Enum`。 3. 在 `Values` 中,新增你的分類選項,例如 "A" 和 "B"。 4. (可選)為了更好的使用者體驗,可以在 `Input mode` 中選擇 `Buttons`,讓選項以按鈕形式呈現。 #### 步驟二:設定第二層「連動」選單的核心公式 這是最關鍵的一步。我們要在「編號」欄位中設定一個公式,讓它的選項根據「銷售類別」的選擇而改變。 1. 在同一個 `Columns` 設定頁面,找到「編號」欄位。 2. 將其 `TYPE` 設定為 `Ref`,並在 `Source table` 中選擇你的「商品資料表」。這表示此欄位的選項將來自商品資料表。 3. 展開欄位設定,找到 **Data Validity** 區塊,點擊 `Valid If` 旁邊的公式編輯器按鈕。 4. 在 `Valid If` 中,貼上以下公式: ```excel IF( [_THISROW].[銷售類別] <> "", FILTER( "一整天代賣商品", LEFT([編號], 1) = [_THISROW].[銷售類別] ), LIST() ) ``` *請注意: `"一整天代賣商品"` 要換成你自己的**商品資料表名稱**。* #### 公式詳解 讓我們來拆解這個公式,理解它每一部分的作用: 1. **`IF( [_THISROW].[銷售類別] <> "", ... , LIST() )`** * 這是一個條件判斷式。 * `[_THISROW].[銷售類別] <> ""` 的意思是:「如果 **目前這筆資料** 的『銷售類別』欄位 **不是空的**」。 * 如果條件成立(使用者已經選了 A 或 B),就執行 `FILTER()` 函數來篩選商品。 * 如果條件不成立(使用者還沒選),則回傳 `LIST()`,也就是一個空的清單。**這是個很重要的技巧**,如果回傳空字串 `""` 會導致 AppSheet 報錯,必須回傳一個合法的空清單。 2. **`FILTER( "一整天代賣商品", ... )`** * `FILTER()` 函數是核心,它有兩個主要參數:`FILTER(要篩選的資料表, 篩選的條件)`。 * 第一個參數 `"一整天代賣商品"` 就是我們的商品來源資料表。 3. **`LEFT([編號], 1) = [_THISROW].[銷售類別]`** * 這是篩選的條件,也是整個連動功能的靈魂。 * `LEFT([編號], 1)`:從「商品資料表」的「編號」欄位中,取出最左邊的 1 個字元(也就是 A 或 B)。 * `[_THISROW].[銷售類別]`:取得「目前使用者正在填寫的這筆資料」中所選擇的「銷售類別」值(例如 "A")。 * 整個條件的意思就是:「**商品編號的第一個字,必須等於使用者當前選擇的銷售類別**」。 當這三個部分組合起來,就完美實現了我們的二層連動選單功能! #### 總結 透過 `IF` 條件判斷來處理初始狀態,再結合 `FILTER` 函數與 `LEFT`、`[_THISROW]` 等語法來動態篩選,你就可以建立出非常直觀且高效率的連動選單,大幅提升 App 的使用者體驗。這個模式不僅限於商品分類,也可以應用在地區/門市、部門/員工等各種需要層級關係的資料輸入場景中。趕快動手試試看吧!彰化一整天的由來 早期的blogger要寫簡介,想說取一個比較特別沒人用過的名稱,有人說過名字要讓人好奇,說明後又不會忘記,還要跟自己有關,在布袋戲中有看到一頁書的角色,想說自己的名字是明和,明和的明是日月合在一起來,日跟月就是一整天,因為這個名字太普遍,我又是彰化人,所以就在前面加上彰化變成【彰化一整天】。
訂閱:
張貼留言 (Atom)
【Google教學】如何讓表單送出時,自動產生「民國日期+流水號」的編號?(使用 AI Studio 寫程式)
今天這篇教學要來解決一個很多人的痛點: 當我們製作 Google 表單時,希望在表單送出後,Google 試算表(Sheets)能自動幫我們產生一組「民國日期 + 流水號」的編號。 例如:今天是民國 114 年 12 月 13 日,第一筆資料要是 1141213-0001 ,第...
-
今天跟大家分享一個實用的Google教學:如何使用Google Apps Script來自動化複製您自訂的股票清單每日股價。 之前我分享的腳本大多是查詢「當天」的股價,但如果您想追蹤長期的股價變化,建立自己的歷史資料庫,那麼這個新腳本將會非常有用。它會自動將您設定的股票每日收盤價...
-
今天windows 10更新後,重新開機用倉頡輸入法輸入後無法按空白送出,底下是解決方法。 1.無法按空白送出 2.開啟【使用舊版的微軟倉頡】 按下 Windows + I 開啟「設定」。 前往「時間與語言」→「語言」→ 點選「中文(繁體,台灣)」→「選項」。 在「鍵盤」下找到「...
-
前言 許多投資者喜歡使用 Google Sheets 來追蹤自己的投資組合,其中 GOOGLEFINANCE 函數非常方便,可以輕鬆抓取上市公司的股價等資訊。然而,當我們需要追蹤 上櫃股票 或其他特定金融商品時, GOOGLEFINANCE 可能就無法使用了。這時候,Goo...
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。