带多AND条件的IF嵌套UNIQUE函数不生效问题求助
表格数据
| A | B | C | D | E | F |
|---|---|---|---|---|---|
| 1 | 2021 | 2022 | 2021 | 2022 | |
| 1 | test | 1 | test | ||
| 1 | 2 | 2 | 2 | ||
| 2 | 3 | 3 | 3 | ||
| 3 | |||||
| 3 | |||||
| 1 |
需求说明
我希望在C:E列中插入A列的唯一值列表,同时满足以下两个条件时,显示单词"test"而非数字1:
- 第1行对应列的值小于单元格
$F$1的值 且 - 当前唯一值等于数字
1
问题描述
我尝试使用以下公式:
C2:E2 = =IF(AND(C$1<$F$1,UNIQUE($A$1:$A$7)=1),"test",UNIQUE($A$1:$A$7))
但公式忽略了条件,仍然显示1而非"test",请问如何修改才能正常工作?
解决方案
原公式失效的核心原因是:UNIQUE($A$1:$A$7)=1会返回一个数组结果,而AND函数不支持数组逻辑判断,无法逐个处理每个唯一值。以下是针对不同Excel版本的修正方案:
方案1:适用于Excel 365/2021(支持动态数组)
在C2单元格输入公式,按回车后会自动溢出填充C列所有行,再将公式复制到D2、E2单元格即可:
=BYROW(UNIQUE($A$1:$A$7), LAMBDA(r, IF(AND(C$1<$F$1, r=1), "test", r)))
UNIQUE($A$1:$A$7)提取A列唯一值列表(结果为{1;2;3})BYROW遍历每个唯一值,对每个值r单独判断条件- 满足条件时返回
"test",否则返回原值r
方案2:适用于旧版Excel(不支持动态数组)
在C2单元格输入数组公式(输入后按Ctrl+Shift+Enter确认),然后下拉填充到需要的行,再横向复制到D、E列:
=IF(AND(C$1<$F$1, INDEX(UNIQUE($A$1:$A$7), ROWS($C$2:C2))=1), "test", INDEX(UNIQUE($A$1:$A$7), ROWS($C$2:C2)))
INDEX(UNIQUE(...), ROWS($C$2:C2))逐个提取唯一值列表中的元素- 通过
ROWS($C$2:C2)实现下拉时自动切换到下一个唯一值
内容的提问来源于stack exchange,提问作者Michi
相关产品推荐
相关产品推荐

