Excel:编写一个使用 Index/Match 的公式,然后检查相关单元格中的值并研究下一个匹配项(如果发现错误)

Excel: Writing a formula that uses Index/Match then checks a related cell for a value and researches for the next match if it finds an error

Here is a spreadsheet I quickly made up to try and explain the problem.

我需要在 C 列中有一个公式,该公式转到第二个 sheet 并检索数据,但如果它在 D 列中产生错误,我需要它返回并搜索下一个匹配直到不再有 N/A 值,或者一旦它搜索了数据库,它就会产生一条消息“未使用”。在我的实际项目中,我在三组列中有 25,000 行,所以不幸的是我无法真正手动完成。

我目前的公式尝试:

=INDEX(Database!$A:$A, MATCH(B3, Database!$B:B, 0), IF(ISERROR(D3), INDEX('Database'!$A:$A, MATCH(B3, 'Component Database'!B:$B, 0)+2), " ")

我已经尝试了其他一些 IF/IFERROR/IFISERROR 但它们都导致了无限循环,或者只是在使用 "+1、+2 等时出现了一定行数之前的随机值”在匹配函数之后。

非常感谢任何帮助!

如果您使用 IFERROR,您可以 "nest" 多个公式,这样它们就 运行 连续,直到一个成功,例如

=IFERROR(INDEX/MATCH1,IFERROR(INDEX/MATCH2,IFERROR(INDEX/MATCH3,"No matches)))

用实际公式替换 INDEX/MATCH 1, 2 and 3(不包括 =

这将使您得到第一个公式的结果.....除非它是一个错误,在这种情况下您会从第二个公式中得到结果....除非这是一个错误,在这种情况下您会得到结果从公式 3 ....除非这是一个错误,在这种情况下你会得到 "No matches"。您可以多次嵌套(最多 64 次)

最终使用这种格式使其工作更深两个级别。

=IF(
  AND(
    INDEX(*Table with value you want returned*, 
    MATCH(*Specific Cell*, *Table to search for cell*, 0)), 

  ISERROR(
    INDEX(*Table of hidden helper column with first result when value is searched*, 
    MATCH(*Cell to see if there is an error*, *Table with return value*, 0)))), 
        IFERROR(
            INDEX(*Table with value you want returned*,
            SMALL(
                IF(*Column*=*Value to be matched in column*,
                    ROW(*Column with matched value*)-ROW(*First Cell of Column with matching value*)+1,
                    ROW(*Last cell in Match Column*)+1),*which match you want returned (1st, 2nd, 3rd, etc... (in 1, 2, 3, etc. format))*),1),  

  INDEX(*Table with value you want returned*, 
  MATCH(*Specific Cell*, *Table to search for cell*, 0))))