在Excel中,如何在date1和date2之间进行计数,该date1和date2在行中具有包含文本的单元格?

时间:2018-09-10 22:05:02

标签: excel excel-formula

我需要在一个列中选择两个日期之间的单元格,然后根据包含这些日期的行,在也包含内容的另一行中选择单元格。

我没有使用ISBLANK,因为它会将一个公式但一个空单元格视为一个空白。而是用"*"检查是否有内容。

这是我想出的,但是它没有返回单元格的数目,而是返回了TRUE(这显然不是我想要的)。

在下面的公式中,我假设:

  • C:C是包含 DATES 的整个列。
  • E:E是包含 CONTENT 的整个列。
  • 在这种情况下,日期范围为 2018年1月1日 2018年1月31日

  • "*"表示单元格中有内容

    =IF(AND(COUNTIFS(C:C,">="&"2018-1-1",C:C,"<="&"2018-1-31"),COUNTIF(E:E,"*"))=0,"",AND(COUNTIFS(C:C,">="&"2018-1-1",C:C,"<="&"2018-1-31"),COUNTIF(E:E,"*")))

我的目标是

  • 计算E列中日期之间的C列中的单元格数目
  • 如果整个公式为0,则返回一个空白。

请参阅这张excel样本工作表的图片,以明确我的意图:

excel sheet

我如何才能使公式正常工作,从而按需运行?


解决方案


大家好,感谢@girlvsdata,我们提供了一个可行的解决方案。我必须对她的代码进行几次编辑才能使用,但是她的公式总体上很完美。解决方法如下:

要选择E列中所有不为空的单元格,如果是日期列,则在相邻的C列的整个一月的日期范围内(未知的结束日期),那么解决方案是:

=IF(COUNTIFS(C:C,">="&"2018-1-1",C:C,"<="&EOMONTH("2018-1-1",0),E:E,"*")=0,"",COUNTIFS(C:C,">="&"2018-1-1",C:C,"<="&EOMONTH("2018-1-1",0),E:E,"*"))

请注意,"2018-1-1"是2018年1月1日,而EOMONTH("2018-1-1",0)是2018年1月的最后一个有效日(在这种情况下为31,但如果又是另一年,则(例如,对于2月,这也适用于leap年)。然后是最后一天)。而且,它无需计算哪个是最后一天或每个月,以及计算结束日期取决于年份(例如2月)的月份。 这对于消除误差幅度很重要

您只需要更改月份即可更改月份,例如-1-(一月)至-2-(二月),或将年份更改为其他年份。使用此公式,您可以忽略日期部分。

如果答案为0(该范围内没有单元格,则任何单元格都没有内容),则该单元格为空白而不是0。到工作表。

它也适用于不同的工作表,只需使用,说您的其他工作表称为“跟踪器”,然后使用Tracker!C:CTracker!E:E。希望对您有帮助!

谢谢大家! :D

1 个答案:

答案 0 :(得分:1)

(请注意:我的本地日期格式是天,然后是月)

数据如上面的示例所示:

       A          B
1     Dates     |Content
    ------------+-------
2   1/01/2018   |
3   2/01/2018   |123456
4   3/01/2018   |
5   4/01/2018   |12398
6   5/01/2018   |484
7   6/01/2018   |1538
8   7/01/2018   |
9   8/01/2018   |   
10  9/01/2018   |
11  10/01/2018  |14648
12  11/01/2018  |
13  12/01/2018  |145615
14  13/01/2018  |

,并在单元格D2E2中设置日期范围:

Date Start  Date End
2/01/2018   7/01/2018

此公式返回计数:

=COUNTIFS(A:A,">="&D2,A:A,"<="&E2,B:B,">0")

这取决于您在Column B中的数字是采用文本格式还是数字格式。如果将它们格式化为数字,则上述公式将起作用。如果它们设置为文本格式,请用">0"替换最后一个"*"部分。

此公式添加了问题的条件部分:

=IF(COUNTIFS(A:A,">="&D2,A:A,"<="&E2,B:B,">0")=0,"",COUNTIFS(A:A,">="&D2,A:A,"<="&E2,B:B,">0"))

(如果公式返回0,则显示空白)