3

我正在寻找一个公式来在一系列单元格上运行 COUNTIF (或类似的),并且其中包含的值是日期,以增加计数器 - 基本上类似于:

=COUNTIF(range, if_date())

我无法找到问题的 if_date() 部分的逻辑测试。有没有办法测试单元格以检查其内容是否为日期?

4

9 回答 9

5

这对于工作表函数来说很困难,因为 excel 中的日期只是格式化的数字 - 只有CELL函数可以让您调查单元格的格式(并且您不能将其应用于范围,因此需要辅助列)..... ..或者,如果您只有日期和空格.....或日期和文本,那么使用COUNT函数就足够了,即

=COUNT(range)

这会计算数字,因此如果您想将日期与数字区分开来,这将是不够的。如果你这样做了,那么可以使用数字范围,例如,如果你有一个范围和日期中的数字,但数字都低于 10,000 并且日期都是相对较新的,那么你可以使用这个版本来排除数字

=COUNTIF(range,">10000")

于 2013-03-06T15:48:59.610 回答
4

这是我的解决方案。如果您的单元格将仅包含日期或空白,只需将其与另一个日期进行比较。如果单元格可以转换为日期,它将被计算在内。

=COUNTIF(C:C,">1/1/1900")
## Counts all the dates in column C

注意,带有数字的单元格将被计算在内。

于 2014-09-17T15:07:04.293 回答
2

这是一种方法。使用上述答案的组合执行以下操作:

  1. 使用预定义格式将单元格转换为文本
  2. 尝试使用 DATEVALUE 将其转换回日期
  3. 排除 DATEVALUE 返回错误的任何单元格

作为一个公式,只需使用下面的示例,将 <> 替换为您的范围参考。

=SUM(IF(ISERROR(DATEVALUE(TEXT(<<RANGE HERE>>, "MM/dd/yyyy"))), 0, 1))

您必须使用 CTRL + SHIFT + ENTER 将其作为数组公式输入。

于 2014-03-21T19:08:43.963 回答
0

要计算满足单个测试的数字或日期(例如等于、大于、小于、大于或等于或小于或等于),请使用 COUNTIF 函数。在 Excel 2007 及更高版本中,要计算某个范围内的数字或日期(例如大于 9000 且同时小于 22500),您可以使用 COUNTIFS 函数。如果您使用的是 Excel 2003 或更早版本,则可以使用 SUMPRODUCT 函数对某个范围内的数字进行计数(在 Excel 2007 中引入了 COUNTIFS)。

请查看更多

于 2013-03-06T15:55:23.267 回答
0

Excel中没有交互式解决方案,因为上面引用的某些函数不是矢量友好的,例如CELL 。例如,可以计算绝对值小于 3 的所有数字,因为ABS在公式数组中被接受。

所以我使用了以下数组公式(Ctrl+Shift+Enter编辑后没有大括号)

             ={SUM(IF(ABS(F1:F15)<3,1,0))}

如果F 列

                   F
          1 ...    2
          2 ....   4
          3 ....  -2
          4 ....   1
          5 .....  5

数为3!(-2,2 和 1)。为了展示 ABS 是如何对数组友好的函数,让我们做一个简单的测试:在编辑栏中选择G1:G5 , digit =ABS(F1:F5)并按Ctrl+Shift+Enter。这就像有人写Abs(F1:F5)(1), Abs(F1:F5)(2)等。

                   F    G
          1 ...    2  =ABS(F1:F5) => 2 
          2 ....   4  =ABS(F1:F5) => 4
          3 ....  -2  =ABS(F1:F5) => 2
          4 ....   1  =ABS(F1:F5) => 1
          5 .....  5  =ABS(F1:F5) => 5

现在我放了一些混合数据,包括 2 个日期值。

                   F
          1 ...    Fab-25-2012
          2 ....   4
          3 ....   May-5-2013
          4 ....   Ball
          5 .....  5

在这种情况下,CELL失败并返回 1

             ={SUM(IF(CELL("format",F1:F15)="D4",1,0))}

发生这种情况是因为CELL返回范围的第一个单元格的格式。(D4是mdy格式)

所以剩下的就是编程了!公式数组的 UDF(用户定义函数)必须返回一个变量数组:

Function TypeCell(R As Range) As Variant
Dim V() As Variant
Dim Cel As Range
Dim I As Integer
Application.Volatile '// For revaluation in interactive environment
ReDim V(R.Cells.Count - 1) As Variant
I = 0
For Each Cel In R
   V(I) = VarType(Cel) '// Output array has the same size of input range.
   I = I + 1
Next Cel
TypeCell = V
End Function

现在很容易(常数VbDate为 7):

             =SUM(IF(TypeCell(F1:F5)=7,1,0))  

它显示 2。该技术可用于任何形状的细胞。我已经测试了垂直、水平和矩形形状,因为您使用 函数内的每个订单进行填充。

于 2013-03-12T22:06:11.510 回答
0

这假设潜在日期值列在 A 列中。您可以在相邻列中执行以下操作:

制作一个嵌套公式,如果“日期”有效,则将其转换为其数值,如果无效,则将错误值转换为零。
然后它将有效的数值转换为 1 并将零保留原样。
然后对新列求和以获得有效日期的总数。

=IF(IFERROR(DATEVALUE(A1),0)>0,1,0)

于 2013-03-06T15:51:02.527 回答
0

以下是我如何能够欺骗 Excel 计算列表中过期的证书。我没有设定日期或日期范围,只有当前日期。“TODAY()”不适用于 Excel 2013。它将其视为文本或条件,而不是日期值。所以这些以前的对我不起作用。所以这个词问题/场景:这个列表中有多少人过期了?

使用: =IFERROR(D5-TODAY(),0) 其中 D5 是要询问的日期。

然后使用: =IF(J5>=1,1,0) 其中 J5 是第一个方程产生正数或负数的单元格。这套,我已经隐藏在可见表的一侧,然后我只是将未过期成员的总数相加。

于 2018-08-31T17:59:17.873 回答
0

有点啰嗦,但对我有用:试试这个::

=SUM(IF(OR(ISBLANK(AU2), NOT(ISERR(YEAR(AU2)))),0,1)
 +IF(OR(ISBLANK(AV2), NOT(ISERR(YEAR(AV2)))),0,1))

if 的第一部分将允许单元格为空白,或者如果单元格中有某些内容,它会尝试将其转换为年份,如果有错误或日期结果 = 1 以外的其他内容,则对每个单元格执行相同操作,然后总结结果

于 2016-09-25T01:53:52.923 回答
0

一个范围内的单元格总数减去同一范围内的空白单元格。

=(115 - (计数空白(C2:C116)))

这会计算范围内的所有内容,因此可能不是您要查找的内容。

于 2019-01-23T17:55:06.203 回答