日期比较公式针对一个特定的日期值返回错误的结果

时间:2018-07-31 08:44:30

标签: excel date excel-formula formula formulas

对于某些人来说,这可能很容易理解,但我很难找到解决方案。我有以下公式:

IF(
AND(TODAY()<=E34;ISBLANK(I34));"Not started";IF(
AND(TODAY()>E34;ISBLANK(I34));"Start delayed";IF(
AND(TODAY()>I34;TODAY()<=F34;ISBLANK(J34));"In progress";IF(
AND(TODAY()>F34;ISBLANK(J34));"Completion delayed";IF(
AND(TODAY()>J34);"Done";"ERROR")
))))

根据返回“未开始”,“开始延迟”,“进行中”,“完成延迟”,“完成”或“错误”的值,比较单元格E34-F34和I34-J34中的日期。< / p>

E34的日期为“ 01.06.2018”-F34的日期为“ 31.07.2018”,而I34的日期为“ 01.06.2018”,而J34的日期为“ 31.07.2018”。公式返回“错误”,尽管它应该返回“完成”。

如果F34和J34的值为30.07.2018而不是31.07.2018,则公式将返回“完成”。 (它也应该在2018年7月31日返回相同的“完成”值)

我附上我的情况图片。希望有人可以帮助enter image description here

1 个答案:

答案 0 :(得分:0)

我对真正的期望条件尚不清楚。如果有实际的文字而不是我使用的日期:

Sub GetADUsers()
    Groupdn = "CN=X,OU=X,OU=X,DC=X,DC=X"
    Set group = GetObject("LDAP://" & Groupdn)

    'On Error Resume Next

    Dim Test As String
    Dim Test2 As String
    Dim i As Integer
    Dim y As Integer

    i = 1
    y = 1

    Sheets("Tabelle1").UsedRange.Clear

    For Each MemberDN In group.member
        segments = MemberDN
        segments = Mid(segments, 3)
        segments = Replace(segments, "=", "")
        segments = Replace(segments, "\", "")
        segments = Replace(segments, "X", "")
        segments = Replace(segments, "X", "")
        segments = Replace(segments, "X", "") ' Im removing some "privat" things here
        segments = Replace(segments, "Y", "")
        segments = Replace(segments, "X", "")
        segments = Replace(segments, ",,", "")
        segments = Split(segments, ",")

        Test = segments(0)
        Test2 = segments(1)

        zahl1 = "A" & i
        zahl2 = "B" & y

        Range(zahl1) = Test
        i = i + 1

        Range(zahl2) = Test2
        y = y + 1
    Next
End Sub

=IF(TODAY()>1*SUBSTITUTE(J34;".";"/");"Done";IF( AND(TODAY()<=1*SUBSTITUTE(E34;".";"/");ISBLANK(I34));"Not started";IF( AND(TODAY()>1*SUBSTITUTE(E34;".";"/");ISBLANK(I34));"Start delayed";IF( AND(TODAY()>1*SUBSTITUTE(I34;".";"/");TODAY()<=1*SUBSTITUTE(F34;".";"/");ISBLANK(J34));"In progress";IF( AND(TODAY()>1*SUBSTITUTE(F34;".";"/");ISBLANK(J34));"Completion delayed";"ERROR") )))) 不需要AND(TODAY()>J34);"Done";"ERROR"),仅当日期大于J34时,评估结果为“完成”。我会将其移到最前面,并进行第一个条件测试。 2018年3月31日不是> AND。今天是31/07/2018因此相等。

如果您的日期是实际日期,则不需要SUBSTITUTE部分。您可以使用ISNUMBER函数检查实际日期,例如如果单元格包含的日期不是文本字符串,则TODAY()将返回True。

没有替代

ISNUMBER(E34)

如果仍然存在问题,我建议说明每个预期的测试条件,并给出一些输入日期和预期的输出。

您给出的有关Error的示例已正确评估。