Excel-基于动态条件填充单元格
我在a栏中列出了一年中的所有日子(对不起,是美式格式!)。根据电子表格中其他地方的一些标准,其中一些日子是“特殊的”。我只想用A列中的日期填充另一列(在下面的示例中为D),以满足特定条件(C列为True)。D列中的所需(动态)输出:Excel-基于动态条件填充单元格,excel,excel-formula,conditional-statements,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
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
感谢您提供的帮助。您可以尝试在数组公式中使用
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))),"")
通过CtrlShift输入
请注意,如果您的值实际上是布尔值,只需在比较中替换布尔值的文本字符串
D2
的另一个选项可以是:
=IFERROR(INDEX($A$2:$A$10,MATCH(0,IF($C$2:$C$10=TRUE,COUNTIF($D$1:D1,$A$2:$A$10),""),0)),"")
也作为数组输入
另一个选项,可能更方便用户,是Pivot表您的范围和筛选日期在SpecialDay
编辑
观看视频后:
- 第一个选项显示日期,因为您查找的是文本字符串而不是布尔值。将
和True
文本字符串更改为实际写入的布尔值False
和True
False
- 保留
参考,它是正确的。公式的第二部分返回一个真实的行数。因为您正在使用A1
它将从该范围的第一行开始计算行数。因此,我的第一个公式中引用的INDEX()
是正确的$A$1:$A$10
- 您尝试的下一件事是使用
值作为真值。这行不通。该公式将尝试查找实际值为1
,该值不存在。因此,公式将返回一个0的数组。由于没有实际值,索引公式将返回单元格A11
因此,视频和努力的问题!您的解决方案是知道如何编写真正的布尔值
TRUE
和FALSE
,它们不带双引号。我将更新这两个公式,因为您无论如何都不使用文本字符串。我非常感谢您的回答。我试过前两种,但无法让它们完全发挥作用。第一个(使用SMALL())可以在第一个单元格上工作,但不能在D3及以下单元格上工作。你是对的,我使用的是布尔逻辑,所以我将“True”改为1并删除引号。和“False”和0相同。是否作为数组输入?Ctrl+Shift+Enter不,我没有。我刚弄明白那是什么意思。然而,现在我在D单元格的数量中得到了“Date”一词,与我在C列中得到的TRUEs的数量相等。当我将公式改为从$A$2开始,而不是$A$1时,我在六个单元格中只得到了1月1日(即“True”事件的数量)。很遗憾,我无法为您测试接下来的几天,但这两种选择都起了作用me@Michael:我想我可能明白了为什么只得到“一”个结果。选择整个D列,然后按delete键。只在D2单元格中粘贴JvdV的公式。然后按Ctrl、Shift和Enter键,如他所述。双击填充手柄进行填充,然后计算图纸。然后你应该看到他得到的同样正确的结果。我认为当你输入他的公式时,你输入的是一个多细胞数组,因此是“一个唯一”的结果。