Microsoft 引入了隱式交集運算子,作為 Excel 公式語言支援 動態陣列的重大升級的一部分。 動態陣列為 Excel 帶來重要的新計算能力與功能。
升級的公式語言
Excel 升級後的公式語言幾乎與舊語言相同,只不過它使用 @ 運算子來指出可能發生隱含交集的位置,而舊語言則以無訊息方式執行此動作。 因此,當您在動態陣列 Excel 中開啟某些公式時,可能會注意到 @ 出現在某些公式中。 您的公式會繼續以原先相同的方式計算。
什麼是隱含交集?
隱含交集邏輯會將許多值縮減為單一值。 Excel 這樣做是為了強制公式傳回單一值,因為儲存格只能包含單一值。 如果您的公式傳回單一值,則隱含交集沒有任何反應 (即使技術上是在背景) 完成。 邏輯運作方式如下:
- 如果值為單一項目,請傳回該項目。
- 如果值是範圍,則從與公式同列或同欄的儲存格傳回該值。
- 如果值是陣列,請選擇左上方的值。
隨著動態陣列的出現,Excel 不再侷限於從公式傳回單一值,因此不再需要無訊息的隱含交集。 如果舊公式可能在無形中觸發隱含交集,則啟用動態陣列的 Excel 會顯示它本應發生的位置。
為什麼要使用 @ 符號?
@ 符號已經在資料表參照中使用,以表示隱含交集。 請在表格 =[@Column1]中考慮下列公式。 @ 表示公式使用隱含交集從 [Column1] 擷取相同資料列上的值。
您可以移除 @ 嗎?
通常你可以。 這取決於 @ 右側的公式部分傳回什麼部分:
- 如果傳回單一值 (最常見的大小寫) ,則移除 @ 時不會有任何變更。
- 如果傳回範圍或陣列,移除 @ 會導致它 溢出 到相鄰的儲存格。
如果您移除自動新增的 @,之後在舊版 Excel 中開啟該活頁簿,它會顯示為舊 版陣列公式 , (括弧 {}) 括住。 此行為可確保舊版不會觸發隱含交集。
我們何時要將 @ 新增至舊公式?
一般而言,如果您是在舊版 Excel 中撰寫,傳回多儲存格範圍或陣列的函數會以 @ 為首碼。 公式的行為方式沒有變化 - 您現在只能看到以前看不見的隱含交集。 傳回多儲存格範圍的常見函數包括 INDEX、OFFSET 和使用者定義函數 (UDF) 。 常見的例外狀況是,如果它們被包裹在接受陣列或範圍 (的函數中,例如 SUM () 或 AVERAGE () ) 。
如需詳細資訊 ,請參閱傳回範圍或陣列的 Excel 函數 。
範例
| 原始公式 | 如動態陣列 Excel 所示 | 說明 |
|---|---|---|
| =SUM (A1:A10) | =SUM (A1:A10) | 無變更 - 不會發生隱含交集,因為 SUM 函數需要範圍或陣列。 |
| =A1+A2 | =A1+A2 | 無變更 - 不會發生任何隱含交集。 |
| =A1:A10 | =@A1:A10 | 發生隱含交集,Excel 會傳回與公式所在資料列相關聯的值。 |
| =INDEX (A1:A10,B1) | =@INDEX (A1:A10,B1) | 可能會發生隱含交集。 當 INDEX 函數的第二個或第三個引數為 0 時,可以傳回陣列或範圍。 |
| =OFFSET (A1:A2,1,1) | =@OFFSET (A1:A2,1,1) | 可能會發生隱含交集。 OFFSET 函數可以傳回多儲存格範圍。 當它發生時,它會觸發隱含交集。 |
| =MYUDF () | =@MYUDF () | 可能會發生隱含交集。 在 Excel 中建立自訂函數可以傳回陣列。 當它們這樣做時,原始公式會觸發隱含交集。 |
在新公式中使用 @ 運算子
如果您在動態陣列 Excel 中撰寫或編輯包含 @ 運算子的公式,它可能會顯示為_xlfn。預動態陣列 Excel 中的 SINGLE () 。
當您認可混合公式時,發生此行為。 混合公式是同時依賴陣列計算和隱含交集的公式。 預動態陣列 Excel 不支援此組合。 前動態陣列 Excel 僅支援 i) 隱含交集或 ii) 陣列計算的公式。
啟用動態陣列時,Excel 偵測到混合公式的建立,它會建議使用隱含交集的公式變體。 例如,如果您輸入, =A1:A10+@A1:A10, 就會看到下列對話方塊:
如果您選擇拒絕對話方塊建議的公式,則會認可混合公式 =A1:A10+@A1:A10 。 如果您稍後在預動態陣列 Excel 中開啟此公式,它看起來就像 =A1:A10+_xlfn.SINGLE(A1:A10) 混合公式中的 @ 運算子顯示為 _xlfn.SINGLE(). 當預動態陣列 Excel 評估此公式時,會傳回 #NAME! 的錯誤值。
需要更多協助嗎?
您隨時都可以詢問 Excel 技術社群 中的專家,或在 社群中取得支援。