代码之家  ›  专栏  ›  技术社区  ›  Samuel Hulla

公式“如果有”(基本上每个都是a)

  •  1
  • Samuel Hulla  · 技术社区  · 7 年前

    您好,我想知道是否有一个公式等价于每个语句的一个。 我知道这在VBA中是可能的,但考虑到这是一份官方报告,我更愿意让它不受宏限制。


    基本上,我有一个列(比如a),其中包含发票的付款时间 `

     |----------------------------------|
    1|DUE DATE (TABLE HEADER, COLUMN A) |  (COLUMN B)
     |==================================|
    2|1/1/2019                          |   =If any of the due dates are past today, trigger
    3|2/5/2018                          |
    4|4/5/2018                          |
    

    现在假设我们有当前日期(2018年2月22日),如您所见,所有这些都没有超过到期日期。

    我在B列有一个单元格,公式如下 =IF(DATEDIF(TODAY(), A2:A4, "d")">0", "All invoices paid in time", "Invoice past the due date found"

    问题是, DATEDIF 只能处理单个日期,不能处理范围。从技术上讲,我可以用多个 OR 公式->如。

    =IF(OR(DATEDIF(TODAY(), A2 "d"), DATEDIF(TODAY(), A3, "D")...and so on......

    但这只在我的示例中可行,在有500个到期日的文档中不可行。 你知道怎么表达吗?


    TL/DR:我正在尝试为一个单元格创建一个公式,如果任何到期日在今天之前,我希望单元格触发一个不同的值

    4 回复  |  直到 7 年前
        1
  •  3
  •   Bathsheba    7 年前

    有点像。进入强大的世界 阵列 :

    假设你的约会在 A1:A3 . 测试日期为 B1 . 地下一层 可能包含(挥发性)公式 =TODAY() .

    您使用 数组公式

    =IF(SUM(IF(A1:A3 > B1, 1, 0)), 1, 0)
    

    记住按Ctrl+Shift+Return将其声明为数组。基本上 IF 在范围内逐单元格计算 A1:A3 . 真是太棒了 for-each -喜欢。

    还有其他方法 特指的 但我给你的答案是,我认为,最容易概括的模式。

        2
  •  3
  •   Gary's Student    7 年前

    使用 MIN() 作用如果 MIN(A:A) 小于 TODAY() 那么至少有一项过期。

        3
  •  1
  •   Samuel Hulla    7 年前

    从技术上讲,我找到了一种方法来实现这一点,但这更多的是一种变通方法,而不是对所讨论公式的正确回答。

    如果创建这样的(隐藏)列

    enter image description here

    使用公式

    =IF(ISNUMBER(DATEDIF(A2, TODAY(), "d"), 1, 0)

    基本上,DATEDIF的工作方式是尝试减去两个日期。然而,由于Excel通常无法获取负数日期 (启用日期系统1904的情况除外) . 如果日期为负数,则会生成#NUM!错误,因此 ISNUMBER 公式的作用类似于此函数中的触发条件。

    然后我们只需创建控制单元

    enter image description here

    使用以下公式

    =IF(SUM(B:B)>0, "ALERT: " & SUM(B:B) & " invoices are past the due date", "No invoices past due date yet")

    其工作方式非常简单。如果我们的datedif触发,则通过添加( SUM )所有触发因素一起,我们获得超过到期日的发票金额(触发到期日的发票)。为了更好地说明: 现在,假设有三分之二的发票超过了到期日期,那么会产生以下结果:

    enter image description here

    希望这有帮助:)

        4
  •  0
  •   ImaginaryHuman072889    7 年前

    您可以尝试以下数组公式:

    = OR(A1:A3>B1)+0