Excel:行数未知的列中如何仅对特定文本使用AND函数实现条件判断?
问题描述
需要在另一工作表中创建公式,对Sheet1的数据进行判断,需同时满足以下前提条件:
- A列等于"User1"
- C列以"01"开头
在满足前提的基础上,根据B列的值返回对应结果:
- B列为"Urlaub" → 返回"CM"
- B列为"Krankenstand" → 返回"CO"
- B列为"Sonstige" → 返回"CP"
- 不满足前提条件或B列是其他值时,忽略(返回空值)
用户尝试过的公式存在逻辑问题,无法正确过滤其他用户和B列的非指定值,尝试的公式如下:
=IF(AND('Sheet1'!A:A="User1",LEFT('Sheet1'!C:C,2)="01",'Sheet1'!B:B="Urlaub"),"CM", IF(AND('Sheet1'!A:A="User1",LEFT('Sheet1'!C:C,2)="01",'Sheet1'!B2="Krankenstand"),"CO","CP"))
解决方案
适用于Excel 365/2021(支持动态数组)
使用SWITCH函数简化多条件判断,配合IF过滤前提条件,公式如下:
=IF(AND('Sheet1'!A:A="User1",LEFT('Sheet1'!C:C,2)="01"), SWITCH('Sheet1'!B:B,"Urlaub","CM","Krankenstand","CO","Sonstige","CP",""),"")
逻辑说明:
- 先通过
AND校验是否满足A列是User1且C列以"01"开头的核心前提 - 满足前提时,用
SWITCH匹配B列的三个指定值,返回对应结果;B列是其他值时返回空值 - 不满足前提时直接返回空值
适用于旧版Excel(不支持动态数组)
需逐行输入公式(以目标工作表第2行为例,完成后下拉填充至所有行):
=IF(AND('Sheet1'!A2="User1",LEFT('Sheet1'!C2,2)="01"), IF('Sheet1'!B2="Urlaub","CM",IF('Sheet1'!B2="Krankenstand","CO",IF('Sheet1'!B2="Sonstige","CP",""))),"")
逻辑说明:
- 逐行判断当前行是否符合前提条件
- 符合前提时,通过嵌套
IF依次匹配B列的三个指定值,返回对应结果;其他情况返回空值 - 不符合前提时返回空值
内容的提问来源于stack exchange,提问作者Iulian Kondor
相关产品推荐
相关产品推荐

