【问题标题】:MONTH() function, to search through entire columnMONTH() 函数,搜索整列
【发布时间】:2016-01-19 05:00:59
【问题描述】:

我目前正在尝试详细了解 excel 中的 MONTH 函数。

基本上,我有一堆列,我希望它只找到符合我在 countifs 函数中规定的条件的列。

目前我有。

=COUNTIFS(Sorted!A:A, "HatType", Sorted!D:D, "PantType", Sorted!C:C, MONTH(TODAY()))

它适用于前两个条件,但是 id 还想添加一个检查以匹配请求的月份。

但是,它返回 0,尽管 3 应该匹配。 Month(Today)) 返回 1(对于今天的月份),我尝试将 sorted for c 列放在这样的位置,Month(Sorted!C:C),但它不起作用。

你们有什么技巧可以让这个工作,而不是创建一个新的列来分隔每个日期和月份。

【问题讨论】:

  • 为了更好地理解,请分享一个很好的数据示例(标题和数据)。

标签: excel date excel-formula


【解决方案1】:

虽然您可以将MONTH function 用于SUMPRODUCT function 中的范围,但您不能直接将其用于COUNTIFCOUNTIFS 函数中的范围。但是,您可以为匹配的记录创建一个日期窗口,而 COUNTIFS 是一个非常有效的公式。

=COUNTIFS(Sorted!A:A, "HatType", Sorted!D:D, "PantType",
          Sorted!C:C, ">="&DATE(YEAR(TODAY()), MONTH(TODAY()), 1),
          Sorted!C:C, "<"&DATE(YEAR(TODAY()), MONTH(TODAY())+1, 1))

=SUMPRODUCT((Sorted!A:A="HatType")*(Sorted!D:D="PantType")*
            (MONTH(Sorted!C:C)=MONTH(TODAY()))*(YEAR(Sorted!C:C)=YEAR(TODAY())))

注意:TODAY function 是一个 volatile¹ 函数。


¹ 每当整个工作簿中的任何内容发生变化时,可变函数都会重新计算,而不仅仅是在影响其结果的某些内容发生变化时。 volatile 函数的示例有 INDIRECTOFFSETTODAYNOWRANDRANDBETWEENCELLINFO 工作表函数的一些子函数也会使它们变得易变。

【讨论】:

  • 感谢您的回复,这对我帮助很大。关于扩展 countifs 示例,如果我想说,包括从本月初到下个月末的日期,id 只需将公式
  • +2 听起来不错;您可以使用任何方法来创建日期“窗口”的上边界。请注意,我使用了'不到下个月的第一天'。这是因为如果我使用 '小于或等于该月的最后一天',则不会捕获该月最后一天的日期时间,例如 31-Jan-2016 01:30 PM .
  • 鉴于 Today 函数会更新整个工作簿,如果我决定扩大规模,是否还有另一个函数不会更新所有内容但应用类似结果?
  • 在单元格中输入(键入)日期并引用该日期或使用返回 DateNow的 VBA 用户定义函数(又名 UDF) >。 VBA UDF 函数不是易失性的,除非您告诉它们是易失性的。您没有与本机工作表函数相同的选择。
  • 哦,好的,谢谢这位伙伴。这也适用于 sumifs 公式吗?昨晚我试着玩弄一个,但它返回了一个#Value!。它与您的工作答案完全相同,只是在总和范围内传入我想要求和的值范围。
猜你喜欢
  • 1970-01-01
  • 2013-09-23
  • 1970-01-01
  • 1970-01-01
  • 2018-12-14
  • 1970-01-01
  • 2019-08-18
  • 2012-03-12
  • 2012-11-15
相关资源
最近更新 更多