使用 IF、INDEX 和 MATCH 从非空白的两列中检索值

Using IF, INDEX and MATCH to retrive the value out of the two column that is not blank

我想同时使用 IFINDEXMATCH 函数从另一个 sheet 获得输出,它有两列(其中一列总是空白,因此需要来自非空白列的值)。

我使用的公式如下:

=IF(ISBLANK('DATA 1'!B:B);
    INDEX('DATA 1'!B:B;MATCH(OUTPUT!B14;'DATA 1'!A:A;0));
    INDEX('DATA 1'!C:C;MATCH(OUTPUT!B14;'DATA 1'!A:A;0)) )

此公式仅从一列返回值,当相应的列为空白时,它显示 #N/A

我希望它显示非空白的任何一列(在另一列 sheet 的两列中)的值。

您应该使用:

=IF(ISBLANK(INDEX('DATA 1'!C:C,MATCH(OUTPUT!B27,'DATA 1'!A:A,0))),INDEX('DATA 1'!B:B,MATCH(OUTPUT!B27,'DATA 1'!A:A,0)),INDEX('DATA 1'!C:C,MATCH(OUTPUT!B27,'DATA 1'!A:A,0)))

尽管您需要注意 ISBLANK 在传递空字符串 ("") 时将 return FALSE,因此如果您在 'DATA 1'!B:B'DATA 1'!C:C 包含这样的条目(可能是这些单元格中的公式的结果),那么上面将不会给出正确的结果。

因此,更严谨的是:

=IF(INDEX('DATA 1'!C:C,MATCH(OUTPUT!B27,'DATA 1'!A:A,0))="",INDEX('DATA 1'!B:B,MATCH(OUTPUT!B27,'DATA 1'!A:A,0)),INDEX('DATA 1'!C:C,MATCH(OUTPUT!B27,'DATA 1'!A:A,0)))

假设 return 是文本,而不是数字,您也可以使用更短的:

=LOOKUP(REPT("z",255),INDEX('DATA 1'!B:C,MATCH(OUTPUT!B27,'DATA 1'!A:A,0),N(IF(1,{1,2}))))

尽管它的简洁性可以说被它的复杂性所抵消,而且,如果这些范围内存在空字符串,这将再次失败。