我需要在一个列中选择两个日期之间的单元格,然后根据包含这些日期的行,在也包含内容的另一行中选择单元格。
我没有使用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样本工作表的图片,以明确我的意图:
我如何才能使公式正常工作,从而按需运行?
解决方案
大家好,感谢@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:C
和Tracker!E:E
。希望对您有帮助!
谢谢大家! :D
答案 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 |
,并在单元格D2
和E2
中设置日期范围:
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,则显示空白)