【问题标题】:Excel - Populate cells based on dynamic conditionExcel - 根据动态条件填充单元格
【发布时间】:2019-06-13 07:36:27
【问题描述】:

我在 A 列中列出了一年中的所有天数(以美国格式,抱歉!)。根据电子表格中其他地方的一些其他标准,其中一些日子是“特殊的”。我只想填充另一列(下例中的 D),其中 A 列中的日期满足特定条件(C 列为真)。 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。

感谢您提供的任何帮助。

【问题讨论】:

    标签: excel excel-formula conditional-statements


    【解决方案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))),"")
    

    通过CtrlShiftEnter

    进入

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

    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 值作为真值。这行不通。该公式将尝试查找实际值为1 的值,其中存在非值。因此,该公式将返回一个 0 数组。导致没有实际值,则索引公式将返回单元格A1。

    所以视频和努力的概率!您的解决方案是知道如何编写真正的布尔值TRUEFALSE,它们不带有双引号。我会更新这两个公式,因为你不使用文本字符串。

    【讨论】:

    • 非常感谢您的回复。我已经尝试了前两个,但我无法让它们充分发挥作用。第一个(使用 SMALL())适用于第一个单元格,但不适用于 D3 及以下。你是对的,我使用的是布尔逻辑,所以我将“True”更改为 1 并删除了引号。与 "False" 和 0 相同。
    • 您输入的是数组吗? Ctrl+Shift+Enter
    • 不,我不是。我才明白那是什么意思。但是,现在我在 D 单元格的数量中得到了“日期”这个词,这与我在 C 列中的 TRUE 数量相等。当我将公式更改为从 $A$2 而不是 $A$1 开始时,我只得到 1 月 1 日六个单元格(即“真”事件的数量)。
    • 很遗憾,我无法在接下来的几天里为您测试它,但是这两个选项都对我有用
    • @Michael :我想我可能明白为什么你只得到“一个”结果。选择整个 D 列并按删除。仅将 JvdV 的公式粘贴到单元格 D2 中。然后按照他的说明按 Ctrl、Shift、Enter。双击填充柄向下填充,然后计算工作表。然后你应该看到他得到的同样正确的结果。我认为当你输入他的公式时,你将它作为一个多单元数组输入,因此是“一个唯一”的结果。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-31
    相关资源
    最近更新 更多