Excel-根据动态条件填充单元格

时间:2019-06-13 07:36:27

标签: excel excel-formula conditional-statements

我将一年中的所有日子都列在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。

感谢您提供的任何帮助。

1 个答案:

答案 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

输入

enter image description here

请注意,如果您的值实际上是布尔值,只需将比较中的文本字符串替换为布尔值即可。

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,因为您查找的是文本字符串而不是布尔值。将TrueFalse文本字符串更改为实际写入的布尔值TRUEFALSE
  • 保留A1参考,这是正确的。公式的第二部分返回真实的行号。由于您使用的是INDEX(),因此它将开始从该范围的第一行开始计数行。因此,第一个公式中的$A$1:$A$10引用是正确的。
  • 您尝试使用的下一个方法是将1值用作真值。这行不通。该公式将尝试查找实际上为NON的1值。因此,公式将返回0的数组。如果没有实际值,则索引公式将返回单元格A1。

视频和努力的机会很大!您的解决方案是知道如何编写真实的布尔值TRUEFALSE,它们没有双引号。由于您始终不使用文本字符串,因此我将更新两个公式。