LAMBDA 函式(三):MAP

更新 發佈閱讀 8 分鐘

今天要接著聊聊 LAMBDA 的第二個輔助函式,MAP

英文中「map」這個詞除了有名詞「地圖」的意思之外,在電腦科學與數學領域裡面偶有動詞「映射」的意思。在正式介紹 MAP 函式之前,我想先用一張圖簡單介紹 Google 試算表 MAP 函式的「映射」是什麼意思。

想像你有個「1、2、3」的陣列,想讓陣列的每個值乘以自己(平方),讓它出現在另一個陣列上:

raw-image

這就是 MAP 的映射了。

Google 試算表的 MAP 函式會讀取某範圍,讓它裡面每個數值都以 LAMBDA 函式運算,回傳對應的新範圍。以上面的例子來說,左手邊的「1、2、3」經過了中間的 LAMBDA 運算(自己乘以自己),就映射出右手邊的「1、4、9」了。

我們常用 MAP 函式做這些事:

  • 資料清理:轉換大小寫、篩選資料、清除特定字詞
  • 資料分類:可搭配不同的條件分類資料(可突破 ArrayFormula 不能與 ANDOR 使用的限制)
  • 清單的文字處理:批次擷取或取代文字

我個人是把 MAP 當作一種 ArrayFormula 在特定狀況無法使用的替代方案(特別是 ANDOR)、或是在做資料清理時,遇到多張結構相似的試算表時候就會用 MAP,再搭配已命名函式,把打包好的函式套用在其他地方,直接把時間省起來,提早休息!

點這邊可以到練習用的試算表,歡迎複製一份,我們一起來練習。




MAP 語法

=MAP(範圍, LAMBDA)
  • 範圍:要套用 LAMBDA 函式的範圍。
  • LAMBDA:要 MAP 套用於範圍內每個值的自訂函式。

語法相當單純!如果你有多個範圍要操作,當然可以多寫幾個範圍,再用 LAMBDA 結束:

=MAP(範圍 1, 範圍 2, 範圍 3, ... LAMBDA)


拿上面的例子,假設在 A1A3 有「1、2、3」三個數字:

raw-image

我希望在 B1B3 可以映射出 A1A3 的平方。在 B1 寫:

=MAP(A1:A3, LAMBDA(val, val * val))
  • 要運算的範圍:A1:A3
  • LAMBDA:把 A1A3 的每個值叫做 val,然後讓它自己乘以自己(val * val)。
raw-image

來看看執行結果:

raw-image

可以看到 B 欄成功把 A 欄透過 LAMBDA 函式映射過去、得到想要的結果了!

那我們來實際操作看看!✨




計算服飾特價

先從簡單的例子開始好了。打開「計算服飾特價」工作表:

raw-image

我們試著用 MAP 函式來算每個品項打 8 折的特價吧!

先釐清一下需求:

  • 範圍:B2B11
  • LAMBDA:範圍的值乘以 0.8。我把範圍裡的值叫做 val,讓 LAMBDA 去計算它。

這樣拼湊起來,我們就會得到:

=MAP(B2:B11, LAMBDA(val, val * 0.8))


放在 C2 上面,看看執行效果怎麼樣:

raw-image

這樣就完成了!




VIP 會員分級

把範圍的資料按條件分類也是 MAP 的常用場景之一。接下來試試看第二個練習,「VIP 會員分級」:

raw-image

我想把每個會員依據 B 欄的消費金額簡單分類,讓他們有不同的會員等級。

分級規則是這樣的:

  • 消費金額超過 50000 元 → VVVIP
  • 消費金額超過 30000 元 → VVIP
  • 消費金額超過 10000 元 → VIP
  • 消費金額低於或含 10000 元 → 一般會員

好,來釐清一下需求:

  • 範圍:B2B13
  • LAMBDA:範圍的值用 IFS 來分類,讓值根據我們設定的條件顯示不同的結果。這邊一樣把範圍裡的值叫做 val,讓 LAMBDA 去計算它。

好,把這邊的需求拼起來,我們就會得到:

=MAP(B2:B13, LAMBDA(val, 
IFS(val > 50000, "VVVIP", val > 30000, "VVIP",
val > 10000, "VIP", val <= 10000, "一般會員")))

我們在 C2 輸入這串算式,就會得到:

raw-image


這樣就輕易完成囉!

如果你不熟悉 IFS 的用法,可以回來這邊複習一下:IFS,IF 只要加個 S...?如果你有更細緻的條件想要設定,當然可以再進一步搭配 ANDOR 函式。




匯率換算

最後來挑戰困難一點點的「匯率換算」!我們要試試看讓 MAP 讀取兩組範圍的值,個別讓 LAMBDA 處理。

raw-image

A 欄跟 B 欄有各有一組資料,分別是當地貨幣與幣別代號。我們想要把每一列的外幣轉成台幣,顯示在 C 欄,像是這樣:

  • 50 USD → ___ TWD
  • 500,000 JPY → ___ TWD
  • 500 EUR → ___ TWD

⋯⋯以此類推。

說到匯率換算,就可以用 GOOGLEFINANCE 函式來幫我們的忙。我們只要把外幣幣別代號跟新台幣的「TWD」代號串在一起,就算得出目前外幣轉新台幣的匯率。舉例:

  • USDTWD:美金轉新台幣
  • JPYTWD:日幣轉新台幣
  • EURTWD:歐元轉新台幣

比如說,下面的算式可以得到 100 塊美金(USD)可以換多少新台幣:

=100 * GOOGLEFINANCE("USDTWD")

(不確定 GOOGLEFINANCE 怎麼做的話,歡迎來這複習:日幣換了沒?GOOGLEFINANCE 總整理(一):匯率換算


一樣釐清一下需求有哪些:

  • 範圍:A2A6(當地貨幣)、B2B6(幣別代號)
  • LAMBDA:取 A 欄的值,之後取 B 欄位的幣別代號並讓它和 TWD 字串接在一起後交給 GOOGLEFINANCE,再讓 A 欄的值跟 GOOGLEFINANCE 的結果相乘。

看起來有點複雜,沒關係!我們一步步來。先從 MAP 這邊指定要運算的範圍:

=MAP(A2:A6, B2:B6, 

LAMBDA

=MAP(A2:A6, B2:B6,
LAMBDA(

接下來指定參數的名稱。我這邊用 local 表「當地貨幣」、code 表「貨幣代碼」,這邊要照順序寫讓 local 會和前面的 A 欄對應、code 與 B 欄對應:

=MAP(A2:A6, B2:B6,
LAMBDA(local, code,

再來要做匯率的轉換,就是 local 乘以 GOOGLEFINANCE 的結果:

=MAP(A2:A6, B2:B6,
LAMBDA(local, code, local * GOOGLEFINANCE(

最後,把剛剛指定的 code(貨幣代碼)和新台幣代號的 TWD 串起來,然後順便寫前面 LAMBDAMAP 的右括號:

=MAP(A2:A6, B2:B6,
LAMBDA(local, code, local * GOOGLEFINANCE(code & "TWD")))

這樣就完成了!


我們在 C2 執行看看,就會得到:

raw-image

搞定!




最後,我另外做了一份「VIP 會員分級 + AND / OR」的示範:

raw-image

你可以點 D2,這邊是我的算式:

=MAP(B2:B, C2:C, LAMBDA(amount, visits,
IFNA(IFS(AND(amount >= 80000, visits >= 8), "VVVIP",
AND(amount >= 80000, visits < 8), "VVIP",
AND(amount <= 80000, visits >= 8), "VIP"),
"一般會員")))

我試著用 MAP,讓它跟 ANDOR 搭配使用。這突破 ArrayFormulaANDOR 不能同時使用的限制,這麼一來也就不需要用巢狀 IF 囉。有興趣的話歡迎參考一下!




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

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

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

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



留言
avatar-img
留言分享你的想法!
avatar-img
喜特先生官方沙龍
21.2K會員
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
喜特先生發佈了一系列介紹 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!
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
Thumbnail
Google 試算表在 2022 年隆重推出了 LAMBDA 函式跟它的輔助函式,讓使用者可以製作自己的函式,還可以在指定範圍內做複雜的運算。LAMBDA 的出現,讓我們在試算表的資料處理能力帶來了革命性的進步,可以更輕鬆地完成複雜的工作!一起來看看。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News