
我 24 小時的大部分時間都在處理 Excel 問題。我有一個公式幾乎可以滿足我的要求,但它沒有返回我想像的應該返回的結果:
=INDEX(Data!D:D,SUMPRODUCT((Data!C:C=Total!A5)*(Data!A:A="Total")*(Data!B:B="Total")*(ROW(Data!D:D))))
我想像資料中 D 列的索引行!工作表是發生匹配的實際行,但對於除第一個值之外的每個值,傳回的值來自其下方的 3 行。
是的,所以對於我應用該公式的第一個單元格,我從資料 D 列中返回了正確的值!但是,對於每個包含公式的後續單元格,我將傳回資料 D 列中的值!比賽下方 3 行。
我嘗試了從公式中減去 3 的每種組合(以返回正確的行),但無濟於事。但這仍然無法解釋為什麼應用公式的第一個單元格會返回預期值!
當然,非常感謝任何和所有的幫助...
答案1
我不太清楚你是否想找到第一、第二等符合 Total!A5,或如果您嘗試尋找 A5 的第一個符合項,然後尋找 A6 的第一個符合項,等等。
我更喜歡使用數學排除方法來捕獲匹配的多個返回值。如果排除掉不匹配的內容,那麼剩下的一定是匹配結果的集合。我也很不耐煩,我發現全列引用的計算滯後很SUMPRODUCT
煩人,所以我已經將你的範圍引用削減到前 ~1K 行。
=IFERROR(INDEX(Data!$D$2:$D$999, SMALL(INDEX(ROW($1:$998)+((Data!$C$2:$C$999<>Total!$A$5)+(Data!$A$2:$A$999<>"Total")+(Data!$B$2:$B$999<>"Total"))*1E+99,,),ROW(1:1))),"")
這是一個標準(非數組) 公式。根據需要填寫以捕獲所有匹配的回報。當您出於自己的目的轉錄此內容時,請記住這ROW(1:998)
是內的位置 Data!D2:D999
,而不是工作表上的實際行號。ROW(1:1)
只是一個隨著您填充而遞增的計數器。有時 aCOUNTIF
在那裡更合適,可用於捕獲多個查找值的多個匹配返回。