缩短 Excel“IF”公式?

缩短 Excel“IF”公式?

这个公式确实有效,但是它太庞大了:

=IF(X3=B2,K2,IF(X3=B3,K3,IF(X3=B4,K4,IF(X3=B5,K5,IF(X3=B6,K6,IF(X3=B7,K7,IF(X3=B8,K8,IF(X3=B9,K9,IF(X3=B10,K10,IF(X3=B11,K11,IF(X3=B12,K12,IF(X3=B13,K13,IF(X3=B14,K14,IF(X3=B15,K15,IF(X3=B16,K16,IF(X3=B17,K17,IF(X3=B18,K18,IF(X3=B19,K19,IF(X3=B20,K20,IF(X3=B21,K21))))))))))))))))))))

它正在做的事情如下:

If X3 is the same as B2, show the contents of cell K2.
If X3 is the same as B3, show the contents of cell K3.
If X3 is the same as B4, show the contents of cell K4.
...etc etc etc all the way to...
If X3 is the same as B21, show the contents of cell K21.

由于 B2:B21 只是一列单元格,而 K2:K21 也只是一列单元格,有没有办法缩短上述公式,使其不那么庞大?

我不知道如何将其转变为 2 个 B 细胞和 K 细胞。

尝试这样的事情是行不通的: =IF(X3=B2:B21,K2:K21)

因为告诉 Excel 使用:就是告诉它将 B2 到 B21 和 K2 到 K21 的所有内容加在一起。我想知道是否有其他分隔符(不是:)告诉 Excel 单独处理每个单元格而不是将它们加起来?

这不起作用: =IF(X3=B2-B21,K2-K21)

其结果是:#VALUE!

问题是,无论 B 单元的数字是多少,也必须与 K 单元中相应的数字(水平)保持匹配。

在此先感谢任何可能知道答案的人,我相信如果 Excel 中存在该功能,那么答案真的很简单。

答案1

根据您的 Excel 版本,您可以使用XLOOKUPVLOOKUPINDEX/MATCH

在此处输入图片描述

=XLOOKUP($X$3,$B$2:$B$22,$K$2:$K$22,"")
=VLOOKUP($X$3,$B$2:$K$22,10,FALSE)
=INDEX($K$2:$K$22,MATCH($X$3,$B$2:$B$22))

答案2

=VLOOKUP(X3;B2:K21;columns(B2:K2))

  • 在 B2:B21 中查找 X3̈́ 的值(范围的第一列)
  • 找到后,选择并显示其右侧的 B2:K2 列的值。

... 是的,VLOOKUP 需要一个参数,通常在您输入函数名称时或甚至在您按下 F1(帮助)时显示。
该参数的默认值是True,因此在这种情况下无需输入,但如果您需要在第一个参数中进行精确匹配,则需要在此处输入“False”。

在其周围添加IFERROR(...;"Not found")以显示“未找到任何内容”的指示。

--- 文件:example.csv --- 使用 M4 代替上面的 X3

,,,,,,,,,,,,
,1,,,,,,,,,一个,,
,2,,,,,,,,,B,,"=VLOOKUP(M4;B2:K21;10;False)"
,3,,,,,,,,,C,,5
,4,,,,,,,,,D,,
,5,,,,,,,,,,E,,
,6,,,,,,,,,F,,
,7,,,,,,,,,G,,
,8,,,,,,,,,H,,
,9,,,,,,,,,我,,
,10,,,,,,,,,J,,
,11,,,,,,,,,K,,
,12,,,,,,,,,大,,
,13,,,,,,,,,男,,
,14,,,,,,,,,,N,,
,15,,,,,,,,,哦,,
,16,,,,,,,,,,,,,,
,17,,,,,,,,,问,,
,18,,,,,,,,,R,,
,19,,,,,,,,,S,,
,20,,,,,,,,,吨,,
,21,,,,,,,,,U,,

答案3

至少,我们可以使用以下方法去掉多余的括号IFS

=IFS(X3=B2,K2,X3=B3,K3,X3=B4,K4,X3=B5,K5,X3=B6,K6,X3=B7,K7,X3=B8,K8,X3=B9,K9,X3=B10,K10,X3=B11,K11,X3=B12,K12,X3=B13,K13,X3=B14,K14,X3=B15,K15,X3=B16,K16,X3=B17,K17,X3=B18,K18,X3=B19,K19,X3=B20,K20,X3=B21,K21)

这是一个普遍的简化,只要你有IF这样的嵌套函数,它就会起作用,即使不同的条件和结果没有任何共同之处。

但是,就你的情况而言一个简单的条件模式,我们可以进一步简化你的表达,例如使用XLOOKUP

=XLOOKUP(X3, B2:B21, K2:K21)

请注意,这XLOOKUP是 Excel 2021 中的一项新功能,可能无法在旧版本的 Excel 中使用。对于这些版本,您可以使用以下方法实现相同的结果INDEXMATCH,例如:

=INDEX(K2:K21, MATCH(X3, B2:B21, 0))

或使用VLOOKUP

=VLOOKUP(X3, B2:K21, COLUMNS(B2:K2), FALSE)

然而,XLOOKUP在这种情况下,支持的地方可能是最方便的解决方案,并且它还支持几个附加参数,让您可以具体说明如何进行搜索以及在未找到完全匹配的情况下该怎么做。

(另请注意,如果您想要沿行而不是列进行搜索,或者从搜索列左侧的列中返回值,则 INDEX/MATCH和解决方案需要进行调整,或者可能根本不起作用。应该VLOOKUPXLOOKUP只是工作在所有情况下,在我看来,这是在可能的情况下优先选择它的一个好理由。

相关内容