在 Excel 中有機會使用陣列公式,但是對些人而言,陣列公式似乎不容易理解。會寫程式的人應該對「陣列」不會陌生,陣列是一塊記憶體,藉由存取陣列,即可使用記憶體中的內容。參考以下的範例(參考下圖):
【常數陣列】
(1) 儲存格C2:=SUM({1,2,3,4,5,6,7})
{1,2,3,4,5,6,7}:以「{ }」含括的為陣列,以「,」隔開元素。{1,2,3,4,5,6,7}並沒有放在儲存格中,而是直接由記憶體取出來運算。
(2) 儲存格C3:=SUM(A1:A7)
如果數值已經置於儲存格(例:儲存格A1:A7),即可直接取出運算。(2)和(1)的運算結果一樣。
【常數陣列運算】
(3) 儲存格C4:{=SUM({1,2,3,4,5,6,7}+3)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵。
可以對陣列的每個元素加以運算,公式結果為:SUM({4,5,6,7,8,9,10})。
本例其實只要輸入「=SUM({1,2,3,4,5,6,7}+3)」即可,不需再按 Ctrl+Shift+Enter 鍵。
(4) 儲存格C5:=SUM({1,2,3,4,5,6,7}*2)
原理同(3),公式結果為:SUM({2,4,6,8,10,12,14})
【多重運算與陣列公式】
以下四個運算的結果是相同的,都是要計算儲存格A1:A7中大於 4 的數值和(5+6+7=18):
(5) 儲存格C6:=SUMIF(A1:A7,">4",A1:A7)
SUMIF 函數以多重運算來取出儲存格範圍中的內容計算。相當於:
{Fasle,Fasle,Fasle,False,True,True,True}*{1,2,3,4,5,6,7}
= {0,0,0,0,5,6,7} (運算時 Fasle=0,True=1)
SUM({0,0,0,0,5,6,7}) = 18
(6) 儲存格C7:=SUMPRODUCT((A1:A7>4)*A1:A7)
SUMPRODUCT 函數以多重運算來取出儲存格範圍中的內容計算。原理同(5)。
(7) 儲存格C8:{=SUM((A1:A7>4)*A1:A7)}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵。原理同(5)。
(8) 儲存格C9:{=SUM(IF(A1:A7>4,A1:A7,))}
這是陣列公式,輸入完成要按 Ctrl+Shift+Enter 鍵。原理同(5)。

看了幾篇版主所寫關於excel陣列的文章,發現陣列的確非常好用,不過小弟並無寫程式的經驗,大多僅用到excel函數的部分,如vlookup,想請教是不是有中文的書目可做為自學的教材,謝謝!
您好, 因為大部分的書對於陣列都無法充分描述, 所以也沒有適當的書籍推薦。 不過這一本:Excel函數與公式實戰精粹,算是對於陣列著墨比較多的。 http://www.delightpress.com.tw/book.aspx?book_id=SKta00002 但是對於初學者或許看起來稍會吃力。 微軟的這篇文章可以看看: http://office.microsoft.com/zh-tw/excel-help/HA010342564.aspx
請問一下 如何在原本的A1:A7直接全部+3 (意思是改原本數值 不額外多用一個公式欄)
請參考:http://isvincent.pixnet.net/blog/post/44798269
請問一下,為何只要我加上{後就不能做計算。就算照上面得所打我輸入完成按 Ctrl+Shift+Enter 鍵,它為何還是認定成名稱呢?
{}不用輸入,是在按 Ctrl+Shift+Enter 鍵後,由 Excel 自動產生的。
您好~請問陣列公式是不是不適用在A檔案與B檔案之間的公式連結,因為我發現我設好後 若再開啟B檔(設公式)公式會出現#REF! 須把A檔也開啟,再到B檔按C+S+enter公式才能帶出來 請問是否有不用也開A檔公式也能更新的解套方法
老師好,有個excel vba問題要請教您 就是要如何在一維陣列理,將搜尋好的資料回傳索引值呢? ex: 號數資料庫_大D = Array("D10", "D13", "D16", "D19", "D22", "D25", "D29", "D32", "D36") 譬如我收尋到符合的字串 D32 要如何回傳她在Array的索引值呢? 非常感謝
老師好,有個excel vba問題要請教您 就是要如何在一維陣列理,將搜尋好的資料回傳索引值呢? ex: 號數資料庫_大D = Array("D10", "D13", "D16", "D19", "D22", "D25", "D29", "D32", "D36") 譬如我收尋到符合的字串 D32 要如何回傳她在Array的索引值呢? 非常感謝!