Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在同一列中查找两个不同字符串的最早日期_Excel_Excel Formula - Fatal编程技术网

Excel 在同一列中查找两个不同字符串的最早日期

Excel 在同一列中查找两个不同字符串的最早日期,excel,excel-formula,Excel,Excel Formula,我有一列包含工单状态的数据,另一列指示工单计划完成的日期。我需要计算出状态为“WCON”或“ACK”的工单的最早日期 我用这个公式 =SMALL(IF(OR('Raw PM Data'!$E$2:$E$999="WCON")*('Raw PM Data'!$E$2:$E$999="ACK"),'Raw PM Data'!$L$2:$L$999),1) E列有州,L列有日期 如果数据集同时具有ACK和WCON条目,则可以正常工作,但是,如果数据集没有“ACK”,则公式将中断并“!“NUM”已报告

我有一列包含工单状态的数据,另一列指示工单计划完成的日期。我需要计算出状态为“WCON”或“ACK”的工单的最早日期

我用这个公式

=SMALL(IF(OR('Raw PM Data'!$E$2:$E$999="WCON")*('Raw PM Data'!$E$2:$E$999="ACK"),'Raw PM Data'!$L$2:$L$999),1)
E列有州,L列有日期

如果数据集同时具有ACK和WCON条目,则可以正常工作,但是,如果数据集没有“ACK”,则公式将中断并“!“NUM”已报告

有人能给我指出解决问题的正确方向吗

谢谢


Garry

尝试使用+而不是
。数组公式不喜欢
限定符:

=SMALL(IF(('Raw PM Data'!$E$2:$E$999="WCON")+('Raw PM Data'!$E$2:$E$999="ACK"),'Raw PM Data'!$L$2:$L$999),1)
这是一个数组公式,必须使用Ctrl-Shift-Enter确认

这是因为任何具有“WCON”或“ACK”的行都将返回true;>0然后将使用这些行来查找最小的行。一个为零,另一个为1。所以把它们加在一起就得到1。如果两者都不存在,则返回0

由于您正在查找第一个最小值,因此也可以使用MIN:

=MIN(IF(('Raw PM Data'!$E$2:$E$999="WCON")+('Raw PM Data'!$E$2:$E$999="ACK"),'Raw PM Data'!$L$2:$L$999))
当需要
限定符时,请使用
*
或多个IF语句

为了证明它是有效的:


我建议按照以下步骤实施。添加了具有最长可能日期的新列(例如:
31/12/9999
i在
F2
中指定)

然后我使用公式
M2=IF(或(E2=“WCON”,E2=“ACK”),L2,$F$2)
,然后将此公式拖到M999,即
M999=IF(或(E999=“WCON”,E999=“ACK”),L999,$F$2)
。然后我使用公式
=SMALL(M2:M999,1)
得到最小值

-这个答案是正确的。按
ctrl+shift+enter


编辑:删除了有关Scott answer的屏幕截图。他的回答是正确的

我没有在单元格中编写复杂的公式,而是使用visual basic创建了一个公共函数,可以用作个性化工作表函数

首先按“alt-F11”打开VB编辑器,它将打开如下窗口:

在此窗口中,您必须添加一个模块,方法是单击“插入”,然后单击“模块”,这将生成一个空代码模块,在该模块中您可以通过以下代码:

Option Explicit

Public Function SMALLIF(Criteria1 As Variant, Criteria2 As Variant, CriteriaRange As Range, DataRange As Range) As Variant
    Dim i As Long
    Dim arrDat() As Variant
    Dim arrRes() As Variant
    ReDim arrRes(0)
    arrDat = Union(CriteriaRange, DataRange)

    For i = LBound(arrDat, 1) To UBound(arrDat, 1)
        If arrDat(i, 1) = Criteria1 Or arrDat(i, 1) = Criteria2 Then
            If UBound(arrRes) = 0 Then
                ReDim arrRes(1 To 1)
                arrRes(1) = arrDat(i, 2)
            Else
                ReDim Preserve arrRes(1 To UBound(arrRes) + 1)
                arrRes(UBound(arrRes)) = arrDat(i, 2)
            End If
        End If
    Next i

    SMALLIF = arrRes(1)
    For i = LBound(arrRes) To UBound(arrRes)
        If arrRes(i) < SMALLIF Then
            SMALLIF = arrRes(i)
        End If
    Next i

End Function
现在应返回状态为WCON和ACK的工单的最早日期


(请记住,您的Excel可能使用
作为参数分隔符,而我的Excel使用
参数分隔符您也可以使用
=IF(SMALL(M2:M999,1)=F2,“不匹配”,SMALL(M2:M999,1))
为了避免显示
31/12/9999
如果没有与Hanks Abdul匹配的内容,我将尝试更多的数据,看看Scott的建议是否无效。我使用的数据集是从服务系统导入的,并且公式与原始数据分开放在单独的工作表上。因此添加列并不理想。您仍然应该将图片放在answ中在编辑模式下,有一个按钮,看起来像一个山。它可以让你粘贴图片。最后一个使用Min和‘+’的语句在这个例子中运行。谢谢史葛。@ USE3556622很高兴我能帮助,请考虑正确的标记。这是你唯一能做的。按答案点击绿色复选标记。
=SMALLIF("WCON"; "ACK"; 'Raw PM Data'!$E$2:$E$999; 'Raw PM Data'!$L$2:$L$999)