使用 IF、INDEX 和 MATCH 从非空白的两列中检索值
Using IF, INDEX and MATCH to retrive the value out of the two column that is not blank
我想同时使用 IF
、INDEX
和 MATCH
函数从另一个 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}))))
尽管它的简洁性可以说被它的复杂性所抵消,而且,如果这些范围内存在空字符串,这将再次失败。
我想同时使用 IF
、INDEX
和 MATCH
函数从另一个 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}))))
尽管它的简洁性可以说被它的复杂性所抵消,而且,如果这些范围内存在空字符串,这将再次失败。