若要在 Mac 版 Excel 中合併大小不一的查閱結果,請使用 REDUCE 搭配 VSTACK 建立一個矩形陣列。本指南會建立美術資產清單、保留請求順序,並顯示未相符的群組,而不是悄悄略過。
這項任務很簡單:每個請求的資產群組可能符合多個來源列、一列,或完全沒有符合項目。您希望所有結果都出現在同一個會自動延展的工作表範圍中,並讓資產標籤與數量保持在一起。
哪些 Mac 版 Excel 版本支援這個方法?
以下的主要公式適用於 Mac 版 Microsoft 365 Excel。Microsoft 在其 REDUCE 函數說明文件中明確列出這個版本。目前的頁面並未列出 Mac 版 Excel 2024,因此僅憑其他新式陣列函數的存在,無法確認完整公式可用。
| 函數 | 相關 Microsoft 文件列出的 Mac 版本 | 在此的用途 |
|---|---|---|
BYROW、MAP |
Mac 版 Microsoft 365;Mac 版 Excel 2024 | 說明原始方法及其限制 |
REDUCE |
Mac 版 Microsoft 365 | 在處理各項請求時保留逐漸累積的結果 |
VSTACK、HSTACK |
Mac 版 Microsoft 365;Mac 版 Excel 2024 | 合併結果區塊並建立備用列 |
FILTER |
Mac 版 Microsoft 365;Mac 版 Excel 2024;Mac 版 Excel 2021 | 傳回所有相符的資產列 |
這些版本資訊來自 Microsoft 的 BYROW、MAP、VSTACK、HSTACK 和 FILTER 參考頁面。
若要查看您安裝的版本,請開啟 Excel 選單並選擇 關於 Excel。Microsoft 的 Mac 版操作說明指出,Office 應用程式的「關於」對話框會顯示版本和授權類型。選擇要使用的公式時,請一併確認這兩項資訊。請參閱 關於 Office:我使用的是哪個 Office 版本?。
較新的 Mac Beta 預覽版變更了巢狀陣列的限制
Microsoft 在 2026 年 9 月 24 日的公告中,將巢狀陣列和 FLATTEN 列為 Beta 通道的預覽功能。公告指定 Mac 版 16.114 組建 26092111 或更新版本,且實際提供時間視推出進度而定。大多數巢狀陣列計算都需要活頁簿相容性版本 3,可透過 公式 > 計算選項 選取。這些條件很重要:僅有 Microsoft 365 並不能確認預覽功能已啟用。請參閱 在 Excel 中透過清單和陣列將多個值放入一個儲存格。
以下的實作解決方案會建立一般的矩形結果,不依賴該預覽功能。這也讓活頁簿的基本資產清單工作不必受巢狀陣列設定影響。
為什麼 BYROW 或 MAP 傳回陣列會造成問題?
Microsoft 說明 BYROW 會針對每個輸入列產生一個結果。其參考資料明確指出,若內部的 LAMBDA 傳回的不是單一值,就會產生 #CALC! 錯誤。會傳回多筆記錄的查閱結果超出了文件所述的限制。請參閱 BYROW 函數。
例如,在下一節輸入範例資料後,以下是依據文件所述單一值行為,顯示此問題方法的診斷範例:
=BYROW(E2:E4,LAMBDA(key,FILTER(A2:C7,A2:A7=key,"No match")))
第一個請求會傳回三列三欄。要求 BYROW 將該區塊放入一個結果位置,就會造成巢狀陣列問題。在傳統計算行為下,將外層函數改為 MAP 並不能提供通用的堆疊操作:內部結果仍包含多個儲存格。Microsoft 的 MAP 說明文件說明如何將輸入值對應至新值,而其 #CALC! 錯誤指南則說明巢狀陣列的限制。
以 VSTACK 包住失敗的計算,無法修正內部結果。實用的做法是在處理請求時逐一附加每個查閱區塊,讓每個中間結果本身都是一個矩形陣列。
使用 REDUCE 和 VSTACK 建立完整的資產查閱結果
1. 輸入合成來源資料
先開啟空白工作表。將以下以定位字元分隔的區塊貼到 A1。數量是美術資產的示意計數。
群組 資產 數量
Mosaic 琥珀磚 2
Orbit 銀環 3
Mosaic 藍磚 4
Prism 透明面板 5
Mosaic 珊瑚磚 1
Prism 霜白面板 2
將以下請求清單貼到 E1。請保留所示順序,以便比較預期結果。
請求的群組
Mosaic
Orbit
Pebble
此範例刻意包含三種結果:Mosaic 有三筆相符記錄,Orbit 有一筆,而 Pebble 沒有任何相符項目。Prism 記錄不應出現在輸出中,因為並未請求該群組。
2. 個別檢查一筆查閱結果
在未使用的區域輸入此公式,例如 L1:
=FILTER($A$2:$C$7,$A$2:$A$7=$E$2,"No match")
它應傳回三筆 Mosaic 記錄。FILTER 會使用群組比較來選取來源中的完整列。其包含陣列的高度或寬度必須相容;此處來源和條件都涵蓋列 2:7。請參閱 FILTER 函數。
這個小檢查可將查閱與堆疊邏輯分開測試。如果列出的內容有誤,請先修正來源標籤或參照,再加入外層計算。
3. 輸入完整的堆疊公式
在欄 G:I 留出空間,然後在 G1 輸入此公式:
=REDUCE(
$A$1:$C$1,
$E$2:$E$4,
LAMBDA(acc,key,
VSTACK(
acc,
FILTER(
$A$2:$C$7,
$A$2:$A$7=key,
HSTACK(key,"No match","")
)
)
)
)
按下 Return。只要在輸出範圍左上方的儲存格輸入一次公式,Excel 就會自動調整溢出範圍的大小。請勿將公式放在 Excel 表格中,因為表格不支援溢位陣列公式。Microsoft 在 動態陣列公式與溢位陣列行為中說明了這兩種行為。
4. 比較預期結果
使用提供的資料時,輸出範圍會佔用 G1:I6:
| 群組 | 資產 | 數量 |
|---|---|---|
| Mosaic | 琥珀磚 | 2 |
| Mosaic | 藍磚 | 4 |
| Mosaic | 珊瑚磚 | 1 |
| Orbit | 銀環 | 3 |
| Pebble | 無相符項目 |
預期的維度可直接從範例得出:一列標題、三列 Mosaic、一列 Orbit,以及一列未相符請求。四筆相符記錄的數量合計為 10。Pebble 旁邊的空白數量可區分查閱結果不存在與資產數量為零。
公式如何組合結果
REDUCE 以 A1:C1 作為累加器的初始值。對於 E2:E4 中的每個值,key 會保存目前請求的群組,而 acc 會保存目前累積的結果。Microsoft 在 REDUCE 函數中說明了初始值、累加器和目前值的這種模式。
在此公式中,FILTER 會建立下一個相符區塊,而 VSTACK 會將它附加在 acc 下方。以實際標題作為初始值,可立即讓結果有三欄,避免加入之後還要丟棄的空白起始列。VSTACK 會依序垂直附加陣列,如 VSTACK 函數所述。
沒有相符項目時,FILTER 的第三個引數會提供 HSTACK(key,"No match","")。這會建立一個三欄的備用列:請求的群組、說明標籤,以及空白數量。Microsoft 在 FILTER 函數中說明空結果引數,並在 HSTACK 函數中說明水平合併。
維持備用列的三欄寬度很重要。Microsoft 說明,當輸入陣列的寬度不同時,VSTACK 會以 #N/A 填補缺少的欄。若備用列只有一個儲存格,旁邊就會出現不必要的填補內容。請參閱 VSTACK 函數。
擴展工作表前,先選擇輸出行為
此公式採用一項特定策略:依序處理每個請求、保留所有相符的來源列,並為未相符的群組顯示一列標記。因此,如果請求清單中重複某個群組,該群組的相符區塊也會重複輸出。如果來源記錄重複,公式也會保留該記錄;公式並未包含移除重複項目的步驟。
調整範例時,請使用以下決策指南:
| 期望結果 | 適用方法 | 條件 |
|---|---|---|
| 每個群組一個計數 | MAP 搭配 COUNTIF |
每項請求產生單一值 |
| 依請求順序列出所有資產記錄 | 上方完整的 REDUCE 公式 |
需要文件列出的 Mac 版 Microsoft 365 函數 |
| 明確列出少數查閱區塊 | 直接 VSTACK 多個個別的 FILTER 呼叫 |
每個請求都要新增一個公式引數 |
| 在儲存格內保留巢狀陣列 | Microsoft 的巢狀陣列預覽功能 | 需要符合文件列出的 Beta 版本供應情況和活頁簿設定 |
若要快速檢查計數,請在 K6 輸入以下完整公式,並在下方預留三個儲存格:
=MAP($E$2:$E$4,LAMBDA(key,COUNTIF($A$2:$A$7,key)))
預期的計數為 3、1 和 0。這是適合使用 MAP 的情況,因為每項請求都會產生一個數字。COUNTIF 會計算符合條件的儲存格數量;此範例使用簡單的合成標籤。請參閱 MAP 函數和 在 Microsoft Excel 中使用 COUNTIF 函數。
Mac 版 Excel 2024 的固定請求替代方案
如果您的版本提供 FILTER、HSTACK 和 VSTACK,但不提供 REDUCE,請在 G1 使用以下完整替代公式,取代先前的公式。對於提供的三項請求,它會產生相同的預期輸出:
=VSTACK(
$A$1:$C$1,
FILTER($A$2:$C$7,$A$2:$A$7=$E$2,HSTACK($E$2,"No match","")),
FILTER($A$2:$C$7,$A$2:$A$7=$E$3,HSTACK($E$3,"No match","")),
FILTER($A$2:$C$7,$A$2:$A$7=$E$4,HSTACK($E$4,"No match",""))
)
Microsoft 在三個必要函數的說明文件中都列出 Mac 版 Excel 2024:FILTER、HSTACK 和 VSTACK。缺點在於維護:每新增一個請求群組,就需要再加一個 FILTER 引數。
診斷錯誤並確保結果完整
若出現 #SPILL! 錯誤,請選取公式儲存格並檢查預定的輸出區域。將該區域中的現有內容移開,並檢查是否有合併儲存格。Microsoft 也指出,將公式放在表格中會造成此問題;請將輸出放在一般工作表格線範圍內。請參閱 如何修正 #SPILL! 錯誤。
若出現 #CALC!,請先找出是哪項計算產生錯誤。傳回多儲存格區塊的 BYROW 公式,會超出文件所述的單一值限制。另一方面,沒有相符項目且未提供備用值的獨立 FILTER,則可能產生空陣列錯誤。Microsoft 的 #CALC! 錯誤指南說明了這兩種不同原因。
新增來源記錄時,請將 $A$2:$C$7 和 $A$2:$A$7 都延伸到相同的結尾列。在 REDUCE 版本中新增請求時,請將 $E$2:$E$4 延伸至最後一項預定請求。避免包含未使用的請求儲存格:公式會處理該範圍中的每個儲存格。
若來源清單經常增長,請考慮將來源存放在 Excel 表格中,並以結構化參照取代固定來源參照。Microsoft 說明,新增或移除表格列時,結構化參照會自動調整。請讓溢位結果保持在表格外。請參閱 動態陣列公式與溢位陣列行為。
使用組合後的資產清單前,請對照請求清單檢查各群組區塊,並確認未相符標記。在此範例中,具體的完成檢查項目包括:三筆 Mosaic 記錄、一筆 Orbit 記錄、一個可見的 Pebble 標記,以及沒有 Prism 記錄。這可確認所提供資料的選取結果和順序符合預期。
來源
BYROW 函數 — Microsoft 支援。
MAP 函數 — Microsoft 支援。
REDUCE 函數 — Microsoft 支援。
VSTACK 函數 — Microsoft 支援。
HSTACK 函數 — Microsoft 支援。
FILTER 函數 — Microsoft 支援。
在 Microsoft Excel 中使用 COUNTIF 函數 — Microsoft 支援。
動態陣列公式與溢位陣列行為 — Microsoft 支援。
如何修正 #CALC! 錯誤 — Microsoft 支援。
如何修正 #SPILL! 錯誤 — Microsoft 支援。
關於 Office:我使用的是哪個 Office 版本? — Microsoft 支援。
在 Excel 中透過清單和陣列將多個值放入一個儲存格 — Microsoft 365 Insider 部落格。