終於要來完成資料驗證系列文的最後一塊拼圖,核取方塊了!
左邊的這顆就是今天的主題,核取方塊了。
核取方塊是一種資料驗證的方式,值只會有兩種可能:勾選與不勾選,有點變相地用視覺化的方塊,來限制使用者輸入特定的東西。
核取方塊可以用在待辦清單、多重選擇、問卷表單等等的地方,對我來說,核取方塊除了這些用途之外,它還更像是一個開關,跟其他函式配合也可以做出不同的動態變化。
今天除了會分享怎麼設定核取方塊之外,還有兩個應用方式,分別是「怎麼把核取方塊跟進度條做結合」:
還有「怎麼把核取方塊當作 IMPORTRANGE 的開關」:
我們一起來瞧瞧!
怎麼設定
資料驗證窗格
有兩個方法,首先是之前介紹過的「資料驗證」窗格。假設這次在 A1 上面設定資料驗證,點選「資料」>「資料驗證」,或是在 A1 上面點右鍵 > 「查看更多儲存格動作」>「資料驗證」,右邊就會看到一個窗格:
點選「新增規則」後,條件改成「核取方塊」,像這樣:
這麼一來,A1 儲存格就會出現核取方塊了:
打勾與不打勾的值
預設來說,在 Google 試算表的運算裡,打勾就是代表真值(TRUE)、未打勾就是假值(FALSE)。如果 A1 的核取方塊是打勾的,那 A1 的值就是 TRUE、反之就是 FALSE,所以我們等等如果要和函式搭配使用的話,就要注意這一點了。
比如說,我們在 B1 寫個:
如果 A1 是打勾的,B1 就出現「✨✨✨」,不然 B1 就什麼都不顯示。
--> IF(A1 = TRUE, B1 = "✨✨✨", "")
你會看到前面的條件是「A1 = TRUE」,翻譯成人類的語言就是「A1 已打勾」的意思囉。
其他設定
往右邊的窗格一看,還出現了「使用自訂儲存格值」、還有「進階選項」。
你如果有特殊的需求,不想用 TRUE 跟 FALSE 這兩種值代表勾選與未勾選,你可以「使用自訂儲存格值」設定自己想要的值。
把窗格的「使用自訂儲存格值」勾選起來:
在「已勾選:」和「已取消勾選:」這邊就可以定義你想要的值了,例如「是」/「否」、「要」/「不要」、「Yes」/ 「No」等等都可以。如果你用函式指定這樣有自訂值的儲存格,記得要用你定義的值、而不是預設的 TRUE 跟 FALSE,否則會沒辦法正常運作。
至於下面的「進階選項」其實就跟之前的設定一樣,可以再進一步針對無效資料的應對方法、還有拒絕輸入內容視窗的驗證說明文字,都是一樣的。如果忘記的話,你可以回到「
資料驗證(一):製作下拉式選單(清單)」複習一下!
目錄列「插入」
另外一個方法比較快,點選儲存格後點目錄列的「插入」,選單內你就會看到有「核取方塊」可以選了:
如果要再進一步設定這個核取方塊,就一樣回到資料驗證窗格的設定就好囉!
應用
接下來想分享文章開頭那兩個核取方塊可以應用的場面:進度條跟 IMPORTRANGE 開關。這邊我們都不特別自訂核取方塊的值是什麼,所以都會以 TRUE 跟 FALSE 來寫接下來的函式囉。
進度條
我們再看一次剛剛示範的 GIF 圖:
這是由之前介紹到的 SPARKLINE 函式做成的,再搭配 COUNTIF 和 COUNTA 就可以囉!
延伸閱讀:
・SPARKLINE 函式 - SPARKLINE 堆疊長條圖
・COUNTIF 函式、COUNTA 函式 - 聊聊 COUNT 的分身們
歡迎打開這邊的
試算表並複製一份,我們一起練習吧。先打開「進度條」工作表:
我已經在 A3 到 A7 幫你把核取方塊做好了,你也可以往下新增更多核取方塊。等等要製作的部分就是進度條,會在 B1 寫函式。我們先定義當核取方塊被勾選的時候,就是「任務已完成」的意思。
好!首先,進度條的長度是怎麼來的呢?其實就是:
= 已完成的任務數 / 全部的任務數
這邊總共有 5 個任務,所以如果我完成了 1 項任務,那麼我的進度就是:
= 1 / 5
= 20%
那麼我們等等就可以利用 COUNTA,先算算這個任務清單(A3 到最後一行)裡面有多少任務:
= 已完成的任務數 / COUNTA(A3:A)
再用 COUNTIF 算有多少核取方塊被勾起來:
= COUNT(A3:A, TRUE) / COUNTA(A3:A)
這樣就可以算出比例了。
再來就是用 SPARKLINE 函式來製作進度條了!我們在 B1 這邊下:
=SPARKLINE(
COUNTIF(A3:A, TRUE),
{"charttype", "bar"; "max", COUNTA(A3:A); "color1","1aa260"})
- COUNTIF(A3:A, TRUE):用這串得到「有幾個核取方塊被選了」。
- {"charttype", "bar";:指定圖表類型是堆疊長條圖。
- "max", COUNTA(A3:A);:指定圖表最大值是任務個數。
- "color1","1aa260"}:指定長條圖的顏色是綠色(#1aa260)。
假如我們勾選了 3 個任務,並且把數字帶入進去上面那串 SPARKLINE 函式的話:
=SPARKLINE(
3,
{"charttype", "bar"; "max", 5; "color1","1aa260"})
也就是 SPARKLINE 會畫出一條長度是 3 的長條,然後設定圖表的最大值是 5 的圖了。我放上刻度稍稍圖解一下:
那這樣比例其實就會一樣是剛剛的「已完成任務數 / 全部的任務數」的概念,我們就可以利用 SPARKLINE 中 max 屬性來製作這樣的長條圖了。結果會像這樣:
當作函式的開關(IMPORTRANGE)
再來是第二個應用,函式的開關。
IMPORTRANGE 會每隔一定的頻率去抓取 IMPORTRANGE 指定範圍的資料。如果資料規模不大,或許問題不大;但如果很大,它可能會影響你所在檔案的運算效率、拖累到你其他在跑的運算、甚至讓你整個檔案都動不了。
為了避免這樣的情況,我們就可以用核取方塊來做個簡易的開關,讓試算表只在某個核取方塊打勾時才執行 IMPORTRANGE。如果你已經完成你的任務,不需要用到 IMPORTRANGE 了,就可以取消勾選那個核取方塊,把試算表跟 IMPORTRANGE 的來源中斷、不再執行。
設定的方法很簡單,只是在 IMPORTRANGE 外面再包一層 IF 而已!
延伸閱讀:
IMPORTRANGE 函式:IMPORTRANGE,即時同步 Google 試算表的資料!
IF 函式:IF,如果 … 那就 … 不然 …
你可以打開我為你準備的試算表,選「IMPORTRANGE 開關」工作表:
我們會在 E2 下函式,讓 IMPORTRANGE 只在核取方塊是 TRUE 的時候,才會執行。選取 E2,先寫:
=IF(B2 = TRUE,
這段話的意思是「如果 B2 的核取方塊是已勾選的(也就是 B2 的值若是 TRUE 的話)」。
如果核取方塊是勾選的,那就做 IMPORTRANGE:
=IF(B2 = TRUE,
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1sfU1DFWQVPBP5dGEgDHPlVXxKeMIwKhCo5zEGADOHKI",
"Example!A:E")
如果不是,那就給個 "",代表空值、什麼都不做。到這步,我們的函式就寫完了:
=IF(B2 = TRUE,
IMPORTRANGE("https://docs.google.com/spreadsheets/d/1sfU1DFWQVPBP5dGEgDHPlVXxKeMIwKhCo5zEGADOHKI",
"Example!A:E"), "")
這樣就會是文章開頭那樣的效果了,預設(不勾選)就是空值,按下核取方塊後才會執行 IMPORTRANGE。
其他核取方塊能應用的場面還有很多,例如:
- 跟條件化格式配合,當某個核取方塊被勾選的時候、整列或整欄會變顏色
- 改變圖表顯示的樣式,只顯示某個核取方塊所代表的項目
- 跟 IF 或 IFS 配合,操作複雜的邏輯運算
這都是不錯的應用方法,歡迎你來發掘看看唷!
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
我是喜特先生,Mr. Sheet,我們下個教學見!