從...*('KIT e SVLAN'!L:L=0)*...
部拆卸的報價後,你有一個工作公式,
=INDEX('KIT e SVLAN'!N:N;MATCH(1;(('KIT e SVLAN'!A:A=E4)*('KIT e SVLAN'!L:L=0)*SIGN(LEN('KIT e SVLAN'!L:L))*('KIT e SVLAN'!AK:AK="S")*('KIT e SVLAN'!AL:AL="AT"));0))
爲了使之更有效率,改變組件E SVLAN工作表到對所引用的數據塊動態命名範圍。通過引用命名範圍,只有恰好爲儘可能多的行將按需要進行處理。當新行被添加或刪除時,範圍將自行改變。
該公式的靜態條件之一是列AL等於"AT"
。如果我們將範圍減少到AL列中包含任何文本的最後一行,那麼低於這個範圍的任何內容都不會在任何情況下返回。在列AL中包含文本值的最後一行可以通過以下公式得出:
=match(char(255); AL:AL)
是的,有一個引用的空格被匹配。該空間對於MATCH function返回文本列中的最後一行很重要。
您的列似乎有特定的用途,所以我將假設您沿着頂行有基於文本的列標題標籤。
轉到公式►定義名稱►名稱管理器。當名稱管理器對話框打開時,點擊新的。
- 給範圍一個名字。我選擇了kesDATA。
- 請將範圍: as 工作手冊。可選提供評論。
- 提供以下公式爲指:,
='KIT e SVLAN'!$A$1:index('KIT e SVLAN'!$A:$XFD; match(char(255); $AL:$AL); match(char(255); $1:$1))
- 點擊OK創造的名稱,然後關閉關閉對話框。
[可選]通過敲擊F5,打字kesDATA並單擊OK 測試新的命名範圍。您應該選擇整個命名範圍。
名稱管理器 - 創建新的名稱
現在改變您的公式對這些陣列formulas¹之一,
'for zeroes and blanks in column L
=INDEX(INDEX(kesDATA; ; 14); MATCH(1; (INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT"); 0))
'for zeroes in column L but not blanks,
=INDEX(INDEX(kesDATA; ; 14); MATCH(1; (INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*SIGN(LEN(INDEX(kesDATA; ; 12)))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT"); 0))
...或這些標準公式之一使用較新的AGGREGATE² function來完成多列cri teria處理。
'for zeroes and blanks in column L,
=INDEX(INDEX(kesDATA; ; 14); AGGREGATE(15; 6; ROW(INDEX(kesDATA; ; 14))/((INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT")); 1))
'for zeroes in column L but not blanks,
=INDEX(INDEX(kesDATA; ; 14); AGGREGATE(15; 6; ROW(INDEX(kesDATA; ; 14))/((INDEX(kesDATA; ; 1)=E3)*NOT(INDEX(kesDATA; ; 12))*SIGN(LEN(INDEX(kesDATA; ; 12)))*(INDEX(kesDATA; ; 37)="S")*(INDEX(kesDATA; ; 38)="AT")); 1))
這些公式可能看起來很複雜,但他們會要求你前一陣formulas¹做了計算週期的一小部分。
¹數組公式需要與按Ctrl +移+Enter↵完成。一旦正確輸入第一個單元格,就可以像其他公式一樣向下或向右填充或複製它們。嘗試並將您的全列引用減少到更接近表示實際數據範圍的範圍。數組公式以對數形式計算週期,所以最好將參考範圍縮小到最小。有關更多信息,請參閱Guidelines and examples of array formulas。
²AGGREGATE function與Excel 2010一起引入。它在早期版本中不可用。
在數組公式中使用整個列引用是一個災難性的想法。你的第二個公式被迫計算超過400萬個單元格,這對於單個公式來說是絕對驚人的。 –
這可能是一個解決方案? VBA或替代公式? – Ale
您是否驗證了至少有一行符合所有這些條件?這是我唯一可以解釋爲什麼你得到#N/A的結果,即沒有行匹配所有4個條件。 –