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,我們下個教學見!



11.3K會員
147內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
今天想聊一組比較冷門的函式,ARABIC 跟 ROMAN 函式,它可以把羅馬數字轉跟阿拉伯數字互換,語法相當單純好學!
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
有招 LET,可以讓你的長算式更清晰好讀!
已命名範圍是 Google 試算表的功能,簡單來說可以把儲存格參照範圍改成自己想要的名字,可以讓算式更好讀、減少維護時間、減少錯誤機率、在算式和可以用這個名字引用這個範圍。來看看怎麼做!
接續著上次提到的 COUNT、COUNTA,我們再稍稍延伸一點,把 COUNT 函式的家族補完,介紹最後的兩名成員:COUNTUNIQUE 跟 COUNTBLANK。
今天想聊一組比較冷門的函式,ARABIC 跟 ROMAN 函式,它可以把羅馬數字轉跟阿拉伯數字互換,語法相當單純好學!
你可能也想看
Google News 追蹤
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
Thumbnail
在沒有分環境之前,每一隻lambda只有一個code console給所有人一起編輯,開發好了就deploy,根據設定的trigger觸發執行。 現在我們希望能夠在code console開發,然後deploy到不同的stage,目標是不同stage的api gateway能夠調用該lambda的
Thumbnail
Lambda Log 是存放至 CloudWatch Logs, 格式跟log level只能預設,但現今是可以修改的 Log 格式:Text Log level:無 Log Group :/aws/lambda/Function Name 實驗開始 新建立測試Functi
Thumbnail
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
Thumbnail
Continue from here Prerequisites Create an IAM role with access to Bedrock Create an "IAM Role" that defines the permissions needed to call Bed
Thumbnail
你會在程式裡面寫函數嗎? 通常寫函數的第一個問題,就是要給函數取名字。 名字取得不好,後來調用函數不自然,就會拖垮整個寫程式的效率。 為函數命名,也是一門技術,好的函數命名,就能提高函數被重複使用的頻率。 然而,也是在某些情況下,我們需要「一次性函數」。 沒錯,用完即丟的函數。
Thumbnail
A lambda function is a small anonymous function and can only have one expression.
Thumbnail
或許就如官網文件中所說的,lambda function就只是syntactic sugar而已,所以也就沒特別在意,直到在設計Game of Life的輸入介面時,因為需要用到,兜兜轉轉,費了好些功夫和時間,總算對它的用途和用法有比較完整的認識。
最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開
Thumbnail
接下來第二部分我們持續討論美國總統大選如何佈局, 以及選前一週到年底的操作策略建議 分析兩位候選人政策利多/ 利空的板塊和股票
Thumbnail
🤔為什麼團長的能力是死亡筆記本? 🤔為什麼像是死亡筆記本呢? 🤨作者巧思-讓妮翁死亡合理的幾個伏筆
Thumbnail
如果我只是想要重複做一些很簡單的運算,還有沒有更簡潔的方式,那就是Lambda匿名函式。 本文將介紹 : Lambda匿名函式的用法,也比較跟自定函式的差異之處。 結合map,filter,sorted函式做應用介紹
Thumbnail
lambda 函式,又稱為“匿名函式”,是一種在 Python 中快速定義單行函式的方法,與 def 定義函式不同,lambda 函式不需要命名。本文將介紹 lambda函式的基礎語法,以及實際應用範例演示。
Thumbnail
在沒有分環境之前,每一隻lambda只有一個code console給所有人一起編輯,開發好了就deploy,根據設定的trigger觸發執行。 現在我們希望能夠在code console開發,然後deploy到不同的stage,目標是不同stage的api gateway能夠調用該lambda的
Thumbnail
Lambda Log 是存放至 CloudWatch Logs, 格式跟log level只能預設,但現今是可以修改的 Log 格式:Text Log level:無 Log Group :/aws/lambda/Function Name 實驗開始 新建立測試Functi
Thumbnail
雖然lambda本身的概念就是主打無伺服器+各自獨立運行的function,但有時又不免其然的需要共用代碼,像是api可能都需要做權限驗證。 會有這方面的研究是因為公司正好要將app跟web共用的api搬到api gateway去處理,但我馬上就想到會有code reuse的問題,怎麼樣用可維護的
Thumbnail
Continue from here Prerequisites Create an IAM role with access to Bedrock Create an "IAM Role" that defines the permissions needed to call Bed
Thumbnail
你會在程式裡面寫函數嗎? 通常寫函數的第一個問題,就是要給函數取名字。 名字取得不好,後來調用函數不自然,就會拖垮整個寫程式的效率。 為函數命名,也是一門技術,好的函數命名,就能提高函數被重複使用的頻率。 然而,也是在某些情況下,我們需要「一次性函數」。 沒錯,用完即丟的函數。
Thumbnail
A lambda function is a small anonymous function and can only have one expression.
Thumbnail
或許就如官網文件中所說的,lambda function就只是syntactic sugar而已,所以也就沒特別在意,直到在設計Game of Life的輸入介面時,因為需要用到,兜兜轉轉,費了好些功夫和時間,總算對它的用途和用法有比較完整的認識。
最近公司寫的系統要上線 , EFS 的存取點套用開發時設定出問題 背景是這樣的 開發 : 存取點 path 設 /xxx , 使用者和群組 id 設 1000 , 目錄使用者和群組 id 也設 1000 , 權限開 0600 (owner 可讀可寫) 上線 : 設定如同開發 神奇的事情出現了 , 開