我們馬上來介紹 LAMBDA
函式的第一個輔助函式 MAKEARRAY
!
把「make array」直翻是「製作陣列」的意思,更具體地來說,它可以讓我們建立指定欄數與列數的範圍,裡面由 LAMBDA
的運算指定這個範圍裡面的值。
比如說,我們可以用 MAKEARRAY
做一張隨機亂數表:
做一張隨機人員清單:
也可以做一張九九乘法表:
這就是 MAKEARRAY
的效果!
好奇怎麼做的話,練習用的試算表在這邊,歡迎複製一份來玩玩看。我們開始囉!
=MAKEARRAY(列數, 欄數, LAMBDA)
MAKEARRAY
套用的 LAMBDA
函式,在這邊要包括已命名函式也沒問題。MAKEARRAY
這邊要提供指定的列數與欄數,參數會與 MAKEARRAY
寫的列與欄相對應。我通常會在這寫英文字母的 row
跟 col
,分別代表 row(列)跟 column(欄)。舉例來說,我想要寫一個 5 列 3 欄的結果,那麼就是:
=MAKEARRAY(5, 3, LAMBDA(row, col, 想寫的自訂算式))
複習一下上次提到的輔助函式與後面 LAMBDA
參數的關係:
所以以上面的例子來看,我們在 MAKEARRAY
寫的 5 就會對應到後面的 row,3 就會對應到後面的 col 囉。
先從簡單的例子開始吧!我想做一張 10 列 5 欄的隨機亂數表,讓它可以隨機顯示 1 到 100 的數字:
先釐清一下我們需要什麼:
LAMBDA
:要包含之前的列跟欄的參數,代表要處理的列數與欄數,然後寫下 RANDBETWEEN
函式讓它產生 1 到 100 的亂數。所以我們在 MAKEARRAY
設下的 10 跟 5,就對應到後面的 row 跟 col,也就是:
好,我們在 A2
這邊寫下:
=MAKEARRAY(10, 5, LAMBDA(row, col, RANDBETWEEN(1, 100)))
輕鬆按下 Enter,來看看結果:
這樣就做出來了!接下來只要編輯工作表的任何地方,上面的數字就會隨機跳動。如果你不希望這樣,可以把表全選起來,複製後貼上值(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 欄的清單:
我們試著釐清現在需求有哪些:
LAMBDA
:要包含之前的列跟欄的參數,代表要處理的列數與欄數。我想到的 LAMBDA
寫法是:
COUNTA
算出名單共有多少人RANDBETWEEN
函式產生 1 到人員數量(從第一步得到)的亂數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 鍵,就會得到:
搞定!
如果名單有刪減,也可以順利對應!我在 G 欄新增了「喜喜」,左手邊的表格也出現了新資料:
最後,我們來做做看九九乘法表:
九九乘法有 9 列 9 欄,然後我們想要讓文字呈現像是「列的數字 x 欄的數字 = 列跟欄的乘積(兩數相乘的結果)」,像是:
1 x 1 = 1
1 x 2 = 2
1 x 3 = 3
...
不過這邊有個小問題,在做相乘的時候,怎麼知道列的數字跟欄的數字是多少?
如果你的 LAMBDA
寫的值沒有做什麼處理,它 MAKEARRAY
的預設值就是從 1 開始。我們可以想像寫 MAKEARRAY
的儲存格位置的左方跟上方有這樣的「座標」:
而九九乘法表,就是拿列的值跟欄的值相乘:
那做到這步,我們來釐清一下需求:
LAMBDA
:列的數字 & 乘號 & 欄的數字 & 等號 & 列的數字與欄的數字的乘積也就是:
LAMBDA(row & " x " & col & " = " & row * col)
好!來試著把它跟 MAKEARRAY
拼裝起來:
=MAKEARRAY(9, 9, LAMBDA(row, col, row & " x " & col & " = " & row * col))
愉快按下 Enter,看看結果:
這樣就完成囉!
希望透過這些練習有讓你對 MAKEARRAY
有一些了解。
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
想要看更多文章的話,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!