
在 Excel 2010 中我使用的公式是:
=_xlfn.IFERROR(INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0),1))
但我需要將其轉換為excel 2003。
_xlfn.IFERROR
成為
_IF(ISERROR)
因此,在 Excel 2003 中,公式現在為:
=IF(ISERROR(INDEX(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0),1)))
但 2003 年有太多的問題需要處理。誰能幫助縮短或簡化公式?
答案1
如果我正確理解邏輯,您需要:在 P76:2044 中查找 Q23 如果存在,則根據該位置從 K 中執行索引,否則根據與 L76:2044 的匹配從 K 中執行索引(並相信存在匹配項)。
如果這是正確的,那麼我會將錯誤陷阱移至 MATCH 函數,而不是 INDEX,如下所示:
=INDEX(K$76:K$2044, IF(ISERROR(MATCH(Q23,P$76:P$2044,0)), MATCH(Q23,L$76:L$2044,0), MATCH(Q23,P$76:P$2044, 0)) ,1)
(我添加了一些額外的空格以使其更加清晰)。這應該會使偵錯更容易,並且可能更有效地計算,因為它只執行兩個匹配和一個索引,而不是 2 和 2(儘管索引非常有效)。
由於索引的數組是單列,因此您可以刪除最後的“,1”,儘管我個人喜歡它提供的清晰度,這肯定是從第一列中提取值。
也許這一句,如果在 L 或 P 中都沒有找到 Q23,這仍然會失敗。
答案2
您缺少一個括號來關閉 ISERROR 函數,而且您還沒有指定如果沒有錯誤的話您想要什麼。也許重複您的第一次索引查找:-
=IF(ISERROR(索引(K$76:K$2044,MATCH(Q23,P$76:P$2044,0),1)),INDEX(K$76:K$2044,MATCH(Q23,L$76:L$2044,0) ,1)),索引(K$76:K$2044,匹配(Q23,P$76:P$2044,0),1))