LAMBDA 函式(二):MAKEARRAY

更新於 發佈於 閱讀時間約 6 分鐘

我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY

把「make array」直翻是「製作陣列」的意思,更具體地來說,它可以讓我們建立指定欄數與列數的範圍,裡面由 LAMBDA 的運算指定這個範圍裡面的值

比如說,我們可以用 MAKEARRAY 做一張隨機亂數表:

raw-image

做一張隨機人員清單:

raw-image

也可以做一張九九乘法表:

raw-image

這就是 MAKEARRAY 的效果!

好奇怎麼做的話,練習用的試算表在這邊,歡迎複製一份來玩玩看。我們開始囉!



MAKEARRAY 語法

=MAKEARRAY(列數, 欄數, LAMBDA)
  • 列數:輸出結果的列數。
  • 欄數:輸出結果的欄數。
  • LAMBDA:這邊寫你想要 MAKEARRAY 套用的 LAMBDA 函式,在這邊要包括已命名函式也沒問題。

MAKEARRAY 這邊要提供指定的列數與欄數,參數會與 MAKEARRAY 寫的列與欄相對應。我通常會在這寫英文字母的 rowcol,分別代表 row(列)跟 column(欄)。舉例來說,我想要寫一個 5 列 3 欄的結果,那麼就是:

=MAKEARRAY(5, 3, LAMBDA(row, col, 想寫的自訂算式))

複習一下上次提到的輔助函式與後面 LAMBDA 參數的關係:


raw-image

所以以上面的例子來看,我們在 MAKEARRAY 寫的 5 就會對應到後面的 row,3 就會對應到後面的 col 囉。




隨機亂數表

先從簡單的例子開始吧!我想做一張 10 列 5 欄的隨機亂數表,讓它可以隨機顯示 1 到 100 的數字:

raw-image

先釐清一下我們需要什麼:

  • 列:10
  • 欄:5
  • LAMBDA:要包含之前的列跟欄的參數,代表要處理的列數與欄數,然後寫下 RANDBETWEEN 函式讓它產生 1 到 100 的亂數。

所以我們在 MAKEARRAY 設下的 10 跟 5,就對應到後面的 row 跟 col,也就是:

  • 10 → row
  • 5 → column


好,我們在 A2 這邊寫下:

=MAKEARRAY(10, 5, LAMBDA(row, col, RANDBETWEEN(1, 100)))
raw-image

輕鬆按下 Enter,來看看結果:

raw-image

這樣就做出來了!接下來只要編輯工作表的任何地方,上面的數字就會隨機跳動。如果你不希望這樣,可以把表全選起來,複製後貼上值(Ctrl/Cmd + Shift + V)。


另外,如果沒有打算用 LAMBDA 來處理的話,也可以用產生隨機亂數陣列的 RANDARRAY 來做,可惜因為它只能指定 0 到 1 的亂數,我們要換個想法:

=ArrayFormula(ROUND(RANDARRAY(10, 5) * 100))
  • RANDARRAY:產生出 10 列 5 欄的亂數陣列,其陣列的數值介於 0 之 1 之間,之後再將這個值乘以 100。
  • ROUND:取約數,把小數點捨去做四捨五入。
  • 最後用 ArrayFormula 把運算套用到陣列上。

我把這個做法放在練習題的右手邊,你可以參考看看。




隨機人員清單

接下來我們試著做一張隨機人員名單。

我們想要讓 MAKEARRAY 可以按照 G 欄的人員,隨機產生一個 8 列 6 欄的清單:

raw-image

我們試著釐清現在需求有哪些:

  • 列:8
  • 欄:6
  • LAMBDA:要包含之前的列跟欄的參數,代表要處理的列數與欄數。

我想到的 LAMBDA 寫法是:

  1. 先用 COUNTA 算出名單共有多少人
  2. 再用 RANDBETWEEN 函式產生 1 到人員數量(從第一步得到)的亂數
  3. 把這個亂數傳給 INDEX 函式,讓它去選 G 欄的其中一格,這樣就會隨機取得人員了。

也就是:

LAMBDA(row, col, INDEX(G2:G, RANDBETWEEN(1, COUNTA(G2:G))))


導到這步,我們就可以跟 MAKEARRAY 拼裝起來了!

一樣在 A2 寫下:

=MAKEARRAY(8, 6, LAMBDA(row, col, INDEX(G2:G, RANDBETWEEN(1, COUNTA(G2:G)))))

颯爽按下 Enter 鍵,就會得到:

raw-image

搞定!


如果名單有刪減,也可以順利對應!我在 G 欄新增了「喜喜」,左手邊的表格也出現了新資料:

raw-image




九九乘法表

最後,我們來做做看九九乘法表:

raw-image

九九乘法有 9 列 9 欄,然後我們想要讓文字呈現像是「列的數字 x 欄的數字 = 列跟欄的乘積(兩數相乘的結果)」,像是:

1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
...


不過這邊有個小問題,在做相乘的時候,怎麼知道列的數字跟欄的數字是多少?

如果你的 LAMBDA 寫的值沒有做什麼處理,它 MAKEARRAY 的預設值就是從 1 開始。我們可以想像寫 MAKEARRAY 的儲存格位置的左方跟上方有這樣的「座標」:

raw-image

而九九乘法表,就是拿列的值跟欄的值相乘:

raw-image

那做到這步,我們來釐清一下需求:

  • 列:9
  • 欄:9
  • LAMBDA:列的數字 & 乘號 & 欄的數字 & 等號 & 列的數字與欄的數字的乘積

也就是:

LAMBDA(row & " x " & col & " = " & row * col)


好!來試著把它跟 MAKEARRAY 拼裝起來:

=MAKEARRAY(9, 9, LAMBDA(row, col, row & " x " & col & " = " & row * col))

愉快按下 Enter,看看結果:

raw-image

這樣就完成囉!

希望透過這些練習有讓你對 MAKEARRAY 有一些了解。




如果你喜歡這次的文章,歡迎你透過這些方法支持我:

  • 按下愛心、按下儲存
  • 留言告訴我你的想法
  • 加入喜特先生的官方沙龍,即時看到我發布的教學
  • 付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
  • 追蹤喜特先生的 Facebook
  • 這邊小額贊助我的創作!

想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!

我是喜特先生,Mr. Sheet,我們下個教學見!



留言
avatar-img
留言分享你的想法!
R-avatar-img
2024/04/12
看完文章後馬上將手邊延宕已久的makearray公式完成了,學會用新函數真的很開心!makearray好適合用來排班、排值日生之類有規律的表格,推薦大家學起來,保證節省大量時間。
喜特先生 Mr. Sheet -avatar-img
發文者
2024/04/12
R 太好了!!✨我也覺得 MAKEARRAY 可用的場合的確就是你提到的,適合用在產生有規律(想指定特定計算方式的表格),也的確讓我省下很多時間!感謝你來看我的教學~
喜特先生 Mr. Sheet -avatar-img
發文者
2024/05/04
LAMBDA 系列文索引提及了這篇文章,趕快過去看看吧!
avatar-img
喜特先生官方沙龍
19.6K會員
153內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2025/04/20
請你試著在 Google 試算表的儲存格上打這個,按下 Enter: =WHATTHEFOXSAY() 會有神奇的事情發生喔 ✨
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/06/02
上次介紹了 REPLACE 函式,可以用來取代儲存格內的特定文字。其實我們還有一個相似的函式叫 SUBSTITUTE,也有取代的功能,不過當然有一點不一樣的地方!今天會分享語法的範例,還有跟 REPLACE 的差異在哪。一起來看看!
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
2024/05/25
這是文字處理基礎函式的第四篇文章,今天要來介紹 REPLACE 函式! REPLACE 可以取代掉儲存格內的文字,今天會分享一下它語法怎麼寫、也有兩個實際應用的案例。一起來看看! REPLACE 語法 REPLACE 的語法長了一點點,有四個參數要設定: =REPLACE(要取代
Thumbnail
看更多
你可能也想看
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
【這個系列,目標是以比較輕鬆的方式讓大家一起學習AE表達式。】 本文是番外篇 3,主要是一些概念的補充,介紹陣列。
Thumbnail
【這個系列,目標是以比較輕鬆的方式讓大家一起學習AE表達式。】 本文是番外篇 3,主要是一些概念的補充,介紹陣列。
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
喜特先生發佈了一系列介紹 LAMBDA 的文章,我把它們都統整在這了!你可以從頭開始學習,也可以找你有興趣的函式開始學習唷。 LAMBDA 函式(一):基本原理 介紹了 Google 試算表在 2022 年推出的 LAMBDA 函式和其輔助函式,以及如何在試算表中使用它們。LAMBDA
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
再來介紹最後一個 LAMBDA 輔助函式,REDUCE!「reduce」這詞在中文的意思是「縮減」。在 Google 試算表上,REDUCE 會把範圍中的每個值套用指定的 LAMBDA 函式,把這函式的結果累計到一個累計值裡,最後回傳這個值,像是把一個範圍「縮~」成一個值。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
接下來介紹 LAMBDA 函式的第四個輔助函式,SCAN! 「scan」在這邊可以翻成「掃描」,而 SCAN 的作用在於對範圍中的每個值進行「掃描」、累計運算,會回傳一個範圍,裡面的數字是每個計算步驟的中繼值;而它最常見的用法就是算「移動總計」(running total)。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
接著想要一口氣介紹兩個類似的 LAMBDA 輔助函式:BYROW 跟 BYCOL。
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP。 英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。一起來看看怎麼用!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
Thumbnail
我們馬上來介紹 LAMBDA 函式的第一個輔助函式 MAKEARRAY!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News