我将一年中的所有日子都列在A列中(以美国格式,抱歉!)。根据电子表格中其他地方的某些其他条件,某些日子是“特殊”的。我只想用满足条件的A列中的日期填充另一列(下例中的D)(C列为True)。列D中所需的(动态)输出:
A B C D
1 Date Day SpecialDay JustSpecials
2 1/1/2019 Tuesday True 1/1/2019
3 1/2/2019 Wednesday False 1/4/2019
4 1/3/2019 Thursday False 1/5/2019
5 1/4/2019 Friday True 1/6/2019
6 1/5/2019 Saturday True 1/8/2019
7 1/6/2019 Sunday True 1/9/2019
8 1/7/2019 Monday False
9 1/8/2019 Tuesday True
10 1/9/2019 Wednesday True
因此,如果由于某种原因某天变得特殊(C列中的False变为True),那么我希望该日期自动添加到D列中。我试图避开此处使用“高级” Excel功能,因为有一天我必须将此系统传递给其他人,因此最好尽可能不使用VBA。
感谢您提供的任何帮助。
答案 0 :(得分:1)
您可以尝试在数组公式中使用SMALL()
,如下所示:
D2
中的公式:
=IFERROR(INDEX($A$1:$A$10,SMALL(($C$2:$C$10=TRUE)*ROW($C$2:$C$10),COUNTIF($C$2:$C$10,FALSE)+(ROW()-1))),"")
通过 Ctrl Shift Enter
输入请注意,如果您的值实际上是布尔值,只需将比较中的文本字符串替换为布尔值即可。
D2
的另一个选项可能是:
=IFERROR(INDEX($A$2:$A$10,MATCH(0,IF($C$2:$C$10=TRUE,COUNTIF($D$1:D1,$A$2:$A$10),""),0)),"")
也输入为数组。
另一个选项,也许甚至更加用户友好,是数据透视表您的范围并在SpecialDay上过滤日期...
编辑
观看视频后:
Date
,因为您查找的是文本字符串而不是布尔值。将True
和False
文本字符串更改为实际写入的布尔值TRUE
和FALSE
。A1
参考,这是正确的。公式的第二部分返回真实的行号。由于您使用的是INDEX()
,因此它将开始从该范围的第一行开始计数行。因此,第一个公式中的$A$1:$A$10
引用是正确的。1
值用作真值。这行不通。该公式将尝试查找实际上为NON的1
值。因此,公式将返回0的数组。如果没有实际值,则索引公式将返回单元格A1。视频和努力的机会很大!您的解决方案是知道如何编写真实的布尔值TRUE
和FALSE
,它们没有双引号。由于您始终不使用文本字符串,因此我将更新两个公式。