Excel COUNTIFS:尝试计算尚未完成的任务的逾期日期

时间:2014-07-24 04:55:39

标签: excel excel-formula excel-2010

我正在尝试计算“计划”日期在“今天的日期”之前的未结任务数,但没有“实际完成日期”。以下是我正在使用的数据示例(列以逗号分隔):

Today's Date, 07/23/2013

Item 1, Plan Date, 07/01/2013
Item 1, Expected Completion Date, 08/02/2013
Item 1, Actual Completion Date,
Item 2, Plan Date, 07/01/2013
Item 2, Expected Completion Date, 08/02/2013
Item 2, Actual Completion Date, 12/01/2013
Item 3, Plan Date, 08/23/2013
Item 3, Expected Completion Date, 08/23/2013
Item 3, Actual Completion Date,

我尝试使用excel中的'COUNTIFS'功能来计算没有'实际完成日期'但在'今天的日期'(2013年7月23日)之前有'计划日期'的项目。在上面的示例数据中,我希望计算返回'1'(因为只有第1项满足此条件)。但是,我没有成功创建一个可行的'COUNTIFS'功能。

有人可以帮忙吗? 我正在尝试使用VBA来解决这个问题。

以下是我试过但没有效果的'COUNTIFs'功能的示例(返回'0'):

=COUNTIFS(B4:B12,"Actual Completion Date",C4:C12,"",B4:B12,"Plan Date",C4:C12,"<"&$C$2)

Column 'B' is for 'Plan Date', 'Expected Completion Date', and 'Actual Completion Date'.
Column 'C' is for dates corresponding to 'Plan Date', 'Expected Completion Date', and 'Actual Completion Date'.
Cell C2 is 'Today's Date' (07/23/2013).

2 个答案:

答案 0 :(得分:1)

不需要VBA,您可以使用 SUMPRODUCT 公式。

=SUMPRODUCT(--($A$3:$A$11=A17),--($B$3:$B$11=" Plan Date"),--($C$3:$C$11<$B$1))*SUMPRODUCT(--($A$3:$A$11=A17),--($B$3:$B$11=" Actual Completion Date"),--($C$3:$C$11<1))

我复制了您的csv,然后粘贴到了从单元格A1开始的新工作表中。在单元格A17-19中,我分别具有“项1”,“项2”和“项3”,而我的公式在单元格B17-19中。

此公式中实际上有两个 SUMPRODUCT 实例。

第一个检查包含“项目1”和“计划日期”且日期小于单元格B1中“今天的日期”的行。由于满足所有条件,因此我得到的TRUE值为1。

第二个实例查找项目AND“实际完成日期”,并且在日期列中没有日期(日期<1)。由于满足所有条件,因此我得到的TRUE值为1。

然后我将两个结果1 * 1 = 1相乘。

然后我将公式复制下来,以便检查项目2和3。由于第二个条件失败(存在完成日期),因此项目2返回0,而由于第一个条件失败(开始日期晚于今天的日期)

答案 1 :(得分:0)

如果所有条件都为真,则Countifs返回一个值。在你的商标B4:B12,“实际完成日期”和B4:B12,“计划日期”不能同时成立,这就是为什么你得到0的问题。

在vba中你可以尝试这个基本代码,假设你总是有3行,3个日期的顺序是相同的,你从第4行开始。

Sub check()
Dim rng As Range, cell As Range, n As Integer, m As Integer, cont As Integer
Set rng = Range("B4:B12")
n = 0
m = 1
For Each cell In rng
    n = n + 1
    If (n = 3 * m) Then
    m = m + 1
         If (Range("D" & 3 + n).Value = "") Then
            If (Range("D" & 3 + n - 2).Value >= "&C2") Then
                cont = cont + 1
            End If
        End If
    End If
Next cell
Debug.Print (cont)

End Sub