我正在尋找創建一個運行數組的 Excel 公式,並返回 N 個匹配結果。即我首先將這個公式放在儲存格 A1 中(例如),它將傳回第一個符合結果。當我將其拖曳到單元格 A2、A3 等時,它分別返回第二個和第三個匹配結果。我目前有一個公式可以做到這一點:
INDEX(Sheet2!$B$2:$B$10081,AGGREGATE(15,3,(Sheet2!$AA$2:$AA$10081="TRUE")/(Sheet2!$AA$2:$AA$10081="TRUE")*(ROW(Sheet2!$AA$2:$AA$10081)-ROW(Sheet2!$AA$1)),ROWS($R$73:R73))))
但是,我正在嘗試使用 OR 函數,因此我不只是檢查單元格範圍是 TRUE 還是 FALSE(目前這是透過輔助單元格/列完成的),而是希望能夠檢查單元格範圍是否為真或假。以下任一條件:
- 值超過 999999 的儲存格
- 值為 0 的儲存格
- 值為負 (<0) 的儲存格
我的嘗試如下:
INDEX(Sheet2!$A$2:$A$10081,AGGREGATE(15,3,(OR(Sheet2!$B$2:$B$10081>999999,Sheet2!$B$2:$B$10081=0,Sheet2!$B$2:$B$10081<0))/(OR(Sheet2!$B$2:$B$10081>999999,Sheet2!$B$2:$B$10081=0,Sheet2!$B$2:$B$10081<0))*(ROW(Sheet2!$B$2:$B$10081)-ROW(Sheet2!$B$1)),ROWS($P$73:P73))))
但這不起作用,因為aggregate() 的第三個參數需要是一個數組,而我使用了一個 OR 函數,該函數的計算結果為布林值。話雖如此,我不確定如何正確整合 OR 函數來檢查上述 3 個條件。
答案1
添加將做一個或者每個條目上的功能等效。所以:
(myRng>999999)+(myRng<=0)
將傳回一個數組,{1..0}
具體取決於是否滿足您的條件。
要為函數建立數組AGGREGATE
,類似於:
1/((myRng>999999)+(myRng<=0))*myRng
答案2
如果您使用的是 Excel 365 並且可以使用 FILTER 函數,則可以使用 FILTER 傳回陣列。每個 OR 條件都可以括在括號中並以 分隔+
,如下所述:
具體來說:
....我們使用帶有加法運算子 (+) 的 FILTER 函數來傳回數組範圍 (A5:D20) 中包含蘋果或位於東部地區的所有值...
在不了解太多資料的情況下,與此類似的內容應該會傳回正確的陣列(如果您想要傳回所有符合的行,實際上不需要與小數組進行聚合)。
=FILTER(Sheet2!$A$2:$A$10081,(Sheet2!$B$2:$B$10081>999999)+(Sheet2!$B$2:$B$10081=0)+(Sheet2!$B$2:$B$10081<0))
然而……我剛剛看到你的評論說這將在 Excel 2016 上使用,所以 FILTER 將不起作用(我會將其留在答案中,以防它對其他人有幫助)。
在 Excel 2016(和 Excel 365)中,您可以使用 Power Query,因為您似乎只是想尋找符合特定條件的行。
我創建了一些範例資料:
現在,只需選擇資料中的任何儲存格,然後使用「資料」>「取得和轉換資料」>「從表格/範圍」即可開啟 Power Query 編輯器,並對資料進行查詢。
在 Power Query 編輯器中,依照要使用的條件篩選值:
現在使用「首頁」>「關閉並載入」將資料放回工作簿中:
最後一步是確保查詢以適當的時間間隔刷新。
將遊標放在查詢結果中,然後轉到“查詢”>“屬性”並根據需要配置刷新屬性: