方格精選

ARRAYFORMULA 函式大解析(一):基本原理

更新於 發佈於 閱讀時間約 6 分鐘
想像一下,如果你有這樣的資料,要在 C 欄計算各行的小計(單價乘數量):
你或許會在 C2 的儲存格寫:
=A2 * B2
然後就把這行算式往下填滿、複製貼上,OK!算完了。這樣方法的確可行,可是如果資料有幾千、幾萬筆,每次都要這樣向下填滿,不但很費時,也會有運算效率不良的問題(可以參照五個「太多」,讓試算表變龜速的原因)。
那怎麼辦?我們今天要介紹的 ARRAYFORMULA 就可以解決這個問題!
學會 ARRAYFORMULA 可以讓你輕鬆處理大量資料,可以簡化算式或函式套用在範圍的步驟,讓試算表更穩定、運作更順暢,也可以減少錯誤的發生。這是我繼 QUERY 後第二個大推的函式,讓你從 Google 試算表的新手搖身一變,成更厲害的專家!

ARRAYFORMULA 是什麼

簡單來說,ARRAYFORMULA 是個「可以讓你只用一個算式,算出整欄或整列的值」的函式。回到上面的例子:
我們想取得小計,要在 C2 上面寫:
=A2 * B2
這樣會拿到 500 乘 6 的結果。但如果我們想要連其他行的小計也一次算好,就可以用 ARRAYFORMULA:
=ARRAYFORMULA(A2:A * B2:B)
看看結果:
欸嘿,直接算完啦!(ノ>ω<)ノ 你會看到 A2 以下的計算就自動算好了,沒問題!

為什麼推薦用 ARRAYFORMULA 呢?

  1. 可以一次大量運算:只要把想算的式子定義好,放到一個儲存格裡、用 ARRAYFORMULA 包起來,它就會自動套用到整個欄或整個列。
  2. 隨著資料更新自動計算:如果你的儲存格有任何數字變動,或是欄、行有增加減少,ARRAYFORMULA 也會跟著更新。
  3. 讓試算表負擔變輕:用了 ARRAYFORMULA 後,因為算式減少,整個試算表都變輕盈了。
  4. 讓你的工作更輕鬆:有了 ARRAYFORMULA,我們就不需要手動輸入、向下填滿算式了,這樣也可以減少人為錯誤的發生。
  5. 跟不同函式結合的可能性:ARRAYFORMULA 也可以跟特定函式結合,常見的組合技有 IF、SUMIF、COUNTIF、VLOOKUP 等等都可以!日後會再詳細介紹。

語法

=ARRAYFORMULA(陣列算式)
嗯,陣列算式是什麼?這邊你可以寫:
  • 範圍,像是 A1:B10、C:C20、5:5
  • 儲存格範圍大小相同的算式,像是 A2:A10 + B2:B10、C2:C * D2:D
  • 傳回多個儲存格結果的函式,像是 QUERY、FILTER、UNIQUE、SORT
那第二點「儲存格範圍大小相同」的算式又是什麼?拿剛剛的表格看一下:
要讓 ARRAYFORMULA 運作的話,必須要給它一樣的儲存格範圍。拿剛剛表格裡的寫法:
=ARRAYFORMULA(A2:A * B2:B)
這邊的範圍就是整個 A2 到所有 A2 以下的範圍(A2:A)、乘上整個 B2 到所有 B2 以下的範圍(B2:B),儲存格範圍的大小都一樣。
換個角度看,A2:A10 跟 B2:B10 的儲存格範圍的大小也相同,都是 9 格。如果範圍大小不一致,就會有機會遇到各種錯誤:
我在 C2 寫了 "=ARRAYFORMULA(A2:A * B2:B3)",而 C4 以後的小計沒辦法被算出來。
另外,如果你覺得 ARRAYFORMULA 這整串很難打,也可以在算式準備好後,按快捷鍵 Ctrl/Command + Shift + Enter,Google 試算表也會自動幫你把剛剛的算式包起來。

範例一

歡迎到這個試算表,複製一份到你的雲端硬碟,一起練習吧!打開來後,應該會看起來像這樣:
(ARRAYFORMULA 練習一:相乘)
我們一樣來試試看算出各個品項的小計吧!
先來看看範圍怎麼定義。這邊第 2 行到第 11 行有不同的飲料品項,要乘的範圍有 B 欄跟 C欄,兩邊都是 10 格,儲存格範圍大小一致,沒問題。算式的話就是 B 欄乘上 C 欄,也就是:
=B2:B * C2:C
可是如果在這時候按下 Enter,只會得到第一行的相乘結果,但 D3 後的儲存格卻得不出結果,因為 Google 試算表不知道你要一次計算兩欄,這時候就要用 ARRAYFORMULA 來處理,包住這串算式。我們在 D2 寫下:
=ARRAYFORMULA(B2:B * C2:C)
結果如下:
你會發現連 D2 下面的其他儲存格也都自動完成了!之後就算要修改函式,只要改 D2 就可以了,讓維護變得很簡單。

範例二

我們切換到另一個練習用的工作表「ARRAYFORMULA 練習二:相加」。
這邊看得到 A 欄有不同店家,B 欄到 E 欄則是春、夏、秋、冬的營業額。我們這次來試試看在 B 欄到 E 欄相加吧!
=B2:B + C2:C + D2:D + E2:E
一樣,在 F2 用 ARRAYFORMULA 把它包起來。
=ARRAYFORMULA(B2:B + C2:C + D2:D + E2:E)
搞定!很簡單吧 (*´∀`*)人(*´∀`*)

之後我會示範 ARRAYFORMULA 跟不同算式、函式的搭配,介紹給大家更多 ARRAYFORMULA 的不同可能性。就跟 QUERY 一樣, ARRAYFORMULA 是個很值得一學的函式,可以讓你面對大型資料更輕鬆,讓你更快把任務搞定!
如果你喜歡這次的文章,歡迎你透過這些方法支持我:
・按下愛心、按下儲存
・留言告訴我你的想法
・加入喜特先生的官方沙龍,即時看到我發布的教學
・付費訂閱喜特先生的官方沙龍,加入每月小額訂閱方案
・追蹤喜特先生的 Facebook
・按這邊小額贊助我的創作!
想要看更多文章,歡迎來到我的 Notion 頁面找找有沒有你需要的資源喔!
我是喜特先生,Mr. Sheet,我們下個教學見!
avatar-img
14.6K會員
148內容數
簡潔,快速,有效, 讓你的日常生活、工作生產力大提升! ___ 快按「加入」,馬上追蹤所有喜特先生的更新,有 Google 試算表教學、Google Apps Script 的研究、數據分析課程的開箱,還有 Google 試算表疑難雜症的解題分享唷!💪
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
喜特先生官方沙龍 的其他內容
什麼,IMPORTRANGE 的進階應用還有第二招!來看看 IMPORTRANGE 可以怎麼跟 QUERY 結合,進一步篩選即時匯入的資料。
在今天的這篇教學,我想列舉五種試算表變慢的可能原因、還有相對應的解決方案!如果你遇到這樣的問題,或許這篇教學可以幫你從龜速深淵中拉出來,邁向健康順暢的喜特人生!
有個可以在 Google 試算表上做單位換算的函式,叫做「CONVERT」,來看看到底怎麼快速轉換單位、免手算吧!
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
日幣大貶,在想著是不是該換一下手上的新台幣了 ( ´・◡・`) ? GOOGLEFINANCE 帶你找到當日的匯率,還有更多功能等你發現唷!
什麼,IMPORTRANGE 的進階應用還有第二招!來看看 IMPORTRANGE 可以怎麼跟 QUERY 結合,進一步篩選即時匯入的資料。
在今天的這篇教學,我想列舉五種試算表變慢的可能原因、還有相對應的解決方案!如果你遇到這樣的問題,或許這篇教學可以幫你從龜速深淵中拉出來,邁向健康順暢的喜特人生!
有個可以在 Google 試算表上做單位換算的函式,叫做「CONVERT」,來看看到底怎麼快速轉換單位、免手算吧!
如果你 WHERE 的條件需要常常更動,但每次都要進去 QUERY 所在的儲存格編輯語法,實在是有點太麻煩了?但其實有個小技巧,可以讓 QUERY 更新得更輕鬆。來看看吧!
連 Google QUERY 官方文件都沒寫的秘密,在這邊公開啦!如果你想提升處理大型資料庫的清理或分析效率,歡迎來參考「SKIPPING」!
日幣大貶,在想著是不是該換一下手上的新台幣了 ( ´・◡・`) ? GOOGLEFINANCE 帶你找到當日的匯率,還有更多功能等你發現唷!
你可能也想看
Google News 追蹤
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
題目敘述 Combination Sum IV 給定一個輸入陣列nums,和目標值target,從nums裡面挑數字去湊出總和 = target,數字可以重複挑選。 請問有多少排列數可以湊出target? 註: 排列數的意思就是位置不同代表兩種不同的方法數。
※ 好用的陣列迭代器:forEach forEach 的使用時機: 需要從頭到尾把陣列中的每一個元素都印出來 ,就適合使用 forEach 方法。 forEach 的必要參數是一個函式: forEach() 的功能是把陣列的每個元素都丟進某個函式執行一次,因此必要的參數是一個函式。 語法:
Thumbnail
在EXCEL中如果要進行四則運算,必須先輸入一個等於『=』,之後再輸入想要運算的算式。 但如果EXCEL的資料中,有一堆算式,但是前面沒有等於該怎麼快速計算呢😣 【📁檔案下載】 看教學之前可以先下載練習檔,學中做、做中學效果更好哦。 檔案下載 【▶️影音教學】
Thumbnail
分享在網路上看到的陣列題目。通常 for...of 的 value 是陣列中的每個值,那如果我們在迭代中對陣列操作會發生什麼事? 題目來源:https://x.com/_jayphelps/status/1774640511158022335?s=20
今天要來嘗試的是,如何不用好用的Array.map 方法,來實現 Array.map 的功能。 What is Array.map map() 方法會建立一個新的陣列,其內容為原陣列的每一個元素經由回呼函式運算後所回傳的結果之集合。 簡單來說就是把陣列內的每一個值,個別跑函式,把新的值回傳出成
(略),array 是用來將陣列的值進行累加,我們來看看怎麼怎麼達成吧: Given an integer array nums, a reducer function fn, and an initial value init, return the final result obtained
Thumbnail
最近每天都有同學在解題社群提問這類型的問題,有些同學甚至po出解答來提問,表示看了解答卻還是看不懂,畢竟有時候「詳解」也沒辦法完整表達所有觀念。 排列組合是一門龐大的章節,許多人聞排組而色變,但排列組合的本質其實還是「窮舉法」,也就是把全部的可能通通列出來,只是很多地方我們可以透過計算讓窮舉變得更
Thumbnail
SUMIF是EXCEL中一個超級實用的統計函數,他可以依據指定的關鍵字進行加總。 SUMIF有條件加總 函數說明=SUMIF(條件範圍,條件,加總範圍) 但如果遇到很多個資料範圍,大多數的人就會使用很多個SUMIF計算後再相加,如下範例所示。 其實這樣多範圍的資料不需要3個SUMIF,
Thumbnail
現代社會跟以前不同了,人人都有一支手機,只要打開就可以獲得各種資訊。過去想要辦卡或是開戶就要跑一趟銀行,然而如今科技快速發展之下,金融App無聲無息地進到你生活中。但同樣的,每一家銀行都有自己的App時,我們又該如何選擇呢?(本文係由國泰世華銀行邀約) 今天我會用不同角度帶大家看這款國泰世華CUB
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
Array可以說是各種語言除了基本型別之外,最常用的資料型別與容器之一了。 Array 這種連續格子狀的資料結構,在Python要怎麼表達呢? 建立一個空的陣列 最簡單也最直接的寫法就是 array = [] # Python list [] 就對應到大家熟知的array 陣列型態的資料結
Thumbnail
高效生活,幫助你找回更多自己的時間 歡迎來到 AL 的 Googlesheet 學習筆記系列文章。在這個系列中,我們將一步步介紹各種函數,並將它們應用於日常生活中,加速工作、提高效率。 今天要介紹的是使用 Index 、 Counta 函數尋找最後一列的資料!
Thumbnail
題目敘述 Combination Sum IV 給定一個輸入陣列nums,和目標值target,從nums裡面挑數字去湊出總和 = target,數字可以重複挑選。 請問有多少排列數可以湊出target? 註: 排列數的意思就是位置不同代表兩種不同的方法數。
※ 好用的陣列迭代器:forEach forEach 的使用時機: 需要從頭到尾把陣列中的每一個元素都印出來 ,就適合使用 forEach 方法。 forEach 的必要參數是一個函式: forEach() 的功能是把陣列的每個元素都丟進某個函式執行一次,因此必要的參數是一個函式。 語法:
Thumbnail
在EXCEL中如果要進行四則運算,必須先輸入一個等於『=』,之後再輸入想要運算的算式。 但如果EXCEL的資料中,有一堆算式,但是前面沒有等於該怎麼快速計算呢😣 【📁檔案下載】 看教學之前可以先下載練習檔,學中做、做中學效果更好哦。 檔案下載 【▶️影音教學】
Thumbnail
分享在網路上看到的陣列題目。通常 for...of 的 value 是陣列中的每個值,那如果我們在迭代中對陣列操作會發生什麼事? 題目來源:https://x.com/_jayphelps/status/1774640511158022335?s=20
今天要來嘗試的是,如何不用好用的Array.map 方法,來實現 Array.map 的功能。 What is Array.map map() 方法會建立一個新的陣列,其內容為原陣列的每一個元素經由回呼函式運算後所回傳的結果之集合。 簡單來說就是把陣列內的每一個值,個別跑函式,把新的值回傳出成
(略),array 是用來將陣列的值進行累加,我們來看看怎麼怎麼達成吧: Given an integer array nums, a reducer function fn, and an initial value init, return the final result obtained
Thumbnail
最近每天都有同學在解題社群提問這類型的問題,有些同學甚至po出解答來提問,表示看了解答卻還是看不懂,畢竟有時候「詳解」也沒辦法完整表達所有觀念。 排列組合是一門龐大的章節,許多人聞排組而色變,但排列組合的本質其實還是「窮舉法」,也就是把全部的可能通通列出來,只是很多地方我們可以透過計算讓窮舉變得更
Thumbnail
SUMIF是EXCEL中一個超級實用的統計函數,他可以依據指定的關鍵字進行加總。 SUMIF有條件加總 函數說明=SUMIF(條件範圍,條件,加總範圍) 但如果遇到很多個資料範圍,大多數的人就會使用很多個SUMIF計算後再相加,如下範例所示。 其實這樣多範圍的資料不需要3個SUMIF,