这个公式确实有效,但它是巨大的:
=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 的所有东西加在一起。我想知道是否有其他分隔符(不是 a :
)告诉 Excel 单独处理每个单元格而不是添加它们?
这不起作用:
=IF(X3=B2-B21,K2-K21)
这导致:#VALUE!
问题是,无论 B 细胞是哪个数字,都必须与 K 细胞中的相应数字(水平)保持匹配。
提前感谢任何可能知道答案的人,如果 Excel 中存在该功能,我相信这真的很简单。
根据您的 Excel 版本,您可以使用
XLOOKUP
,VLOOKUP
或INDEX/MATCH
=VLOOKUP(X3;B2:K21;columns(B2:K2))
... 并且是 VLOOKUP 需要一个参数,通常在您输入函数名称时显示,甚至在您按下 F1(帮助)时显示。
该参数的默认值为
True
,因此在这种情况下无需输入,但如果您需要在第一个参数中精确匹配,则需要在此处输入“False”。在它周围添加
IFERROR(...;"Not found")
以显示“未找到”的指示。--- 文件:example.csv --- 使用 M4 代替上面的 X3
至少,我们可以使用 去掉多余的括号
IFS
:这是一个通用的简化,只要您有这样的嵌套
IF
函数,即使不同的条件和结果没有任何共同点,它也适用。但是,在您的情况下,条件有一个简单的模式,我们可以进一步简化您的表达式,例如使用 using
XLOOKUP
:请注意,这
XLOOKUP
是 Excel 2021 中的一项新功能,可能不适用于旧版本的 Excel。对于这些版本,您可以使用INDEX
and获得相同的结果MATCH
,如下所示:或使用
VLOOKUP
:但是,在这种情况下,如果支持,
XLOOKUP
可能是最方便的解决方案,并且它还支持几个附加参数,这些参数可以让您具体说明搜索是如何完成的,以及在没有找到完全匹配的情况下应该做什么。(另请注意,
INDEX
/MATCH
和VLOOKUP
解决方案将需要调整,或者可能根本不起作用,如果您想沿行而不是列搜索或从搜索左侧的列返回值列。XLOOKUP
应该在所有情况下都有效,IMO 是一个在可能的情况下更喜欢它的好理由。)