隱式交集運算子是為了支援 動態陣列而大幅升級 Excel 公式語言的一部分。 動態陣列為 Excel 帶來了顯著的新計算能力與功能。
升級版公式語言
Excel 升級後的公式語言幾乎與舊語言相同,只是使用 @ 運算子來表示可能隱含交叉的位置,而舊語言則是靜默地完成此操作。 因此,你可能會注意到 @'s appear in some formulas when opened in dynamic array Excel. It'一個重要的是, 你的公式會以原本的方式繼續計算。
什麼是隱性交集?
隱式交叉邏輯將多個值簡化為單一值。 Excel 這麼做是為了強制公式回傳單一值,因為一個儲存格只能包含單一值。 如果你的公式只回傳單一值,那麼隱式交集即使技術上是在背景) 中進行,也不會 (。 其邏輯如下:
- 如果價值是單一物品,則退還該物品。
- 如果值是範圍,則回傳與公式同一列或同一列的儲存格值。
- 如果值是陣列,則選擇左上角的值。
隨著動態陣列的出現,Excel 不再侷限於從公式回傳單一值,因此不再需要靜默的隱式交叉。 舊公式可能會無形地觸發隱式交叉,而啟用動態陣列的 Excel 則顯示 @ 會發生在哪裡。
為什麼是@符號?
@符號已用於表格引用中,用以表示隱式交叉。 考慮表格中的以下公式 =[@Column1]。 此處 @ 表示公式應使用隱式交叉來從 [Column1] 取得同一列的值。
你能移除 @ 嗎?
通常你可以。 這取決於 @ 右邊的公式回傳內容:
- 如果回傳 (最常見的) 值,移除 @ 也不會有改變。
- 如果回傳一個範圍或陣列,移除 @ 會讓它溢 出 到鄰近的儲存格。
如果你移除自動新增的 @,然後在舊版 Excel 中打開工作簿,它會顯示為舊有 陣列公式 , (用大括號 {} 包裹,) ,這是為了確保舊版本不會觸發隱式交叉。
我們什麼時候要把 @ 加進舊公式?
一般來說,回傳多格範圍或陣列的函式,如果是用舊版 Excel 撰寫,會以 @ 作為前綴。 值得注意的是,公式的行為沒有改變——你現在只看到之前看不見的隱含交集。 常見可回傳多格範圍的函式包括 INDEX、OFFSET 以及 UDF () 的使用者定義函數。 一個常見例外是當它們被包裹在接受陣列或範圍的函式中,例如 ( () 或平均 () ) 。
更多細節請參考 Excel 函式,回傳範圍或陣列 。
範例
| 原始公式 | 如動態陣列 Excel 所示 | 說明 |
|---|---|---|
| =總和 (A1:A10) | =總和 (A1:A10) | 無變動 - 不會發生隱式交叉,因為 SUM 函式預期範圍或陣列。 |
| =A1+A2 | =A1+A2 | 無變化——不會發生隱含交叉。 |
| =A1:A10 | =@A1:A10 | 隱式交集會發生,Excel 會回傳與公式所在列相關的值。 |
| =指數 (A1:A10,B1) | =@INDEX (A1:A10,B1) | 隱性交集可能會發生。 當 INDEX 函 式的第二或第三個參數為 0 時,可以回傳陣列或範圍。 |
| =偏移量 (A1:A2,1,1) | =@OFFSET (A1:A2,1,1) | 隱性交集可能會發生。 OFFSET 函數可以回傳多格範圍。 當它發生時,會觸發隱含交叉。 |
| =MYUDF () | =@MYUDF () | 隱性交集可能會發生。 使用者定義函式 可以回傳陣列。 當它們出現時,原本的公式會觸發隱含交集。 |
在新公式中使用 @ 運算子
如果你在動態陣列 Excel 中撰寫或編輯包含 @ 運算子的公式,可能會顯示為 _xlfn。在動態陣列前的 Excel 中進行單 () 。
這是因為你輸入了混合公式。 混合公式是指同時依賴陣列計算與隱式交叉的公式,這在動態陣列出現前的 Excel 中並不支援。 動態陣列前只 支援包含隱 式交叉或 ii) 陣列計算的公式,) i。
當啟用動態陣列的 Excel 偵測到建立「混合公式」時,會提出一個隱含交集的公式變體。 例如,輸入 =A1:A10+@A1:A10,時會看到以下對話框:
如果你選擇拒絕對話中提出的公式,混合公式 =A1:A10+@A1:A10 將會被提交。 如果你之後在未動態陣列的 Excel 中打開這個公式,混合公式中的 @ 會顯示 =A1:A10+_xlfn.SINGLE(A1:A10) 為 _xlfn.SINGLE(). 當這個公式被未動態陣列 Excel 評估時,會回傳一個 #NAME! 的錯誤值。
需要更多協助嗎?
你隨時可以向 Excel 技術社群 的專家詢問,或在 社群中獲得支援。