Excel 逻辑表达式匹配问题

Excel 逻辑表达式匹配问题

我有一个数据块,代表流程中的步骤和可能出现的错误:

流程步骤状态
费用已付
表格已接收 OK
角色分配确定
已签入 未签入。
ReadyToStart 尚未准备好开始

我想找到第一个不为“OK”的状态。

我曾尝试过这个:

=Match("<>""OK""", StatusRange, 0)
它应该将范围内第一个不等于(<>)元素的索引返回为“OK”
但这不起作用,而是返回#N/A

我希望它返回 4(索引 #4,在基于 1 的索引中,表示 CheckedIn 是第一个非 OK 元素)

有什么想法可以做到这一点吗?

答案1

假设要检查的单元格位于 A1:A10。那么使用以下公式即可:

=MATCH(0,IF(A1:A10="OK",1,0),0)

由进入Ctrl+Shift+Enter

答案2

至少有一种简单的方法可以做到这一点,只要您不介意在某处设置另一个(可能隐藏的)单元格块即可。例如,您可以按如下方式添加一个公式列,用于测试其左侧的单元格是否等于“OK”:

|   | A              | B        | C        |
|---+----------------+----------+----------|
| 1 | "ProcessStep"  | "Status" |          |
| 2 | "FeesPaid"     | "OK"     | =B2="OK" |
| 3 | "FormRecvd"    | "OK"     | =B3="OK" |
| 4 | "RoleAssigned" | "OK"     | =B4="OK" |
| 5 | "CheckedIn"    | "OK"     | =B5="OK" |
| 6 | "ReadyToStart" | "OK"     | =B6="OK" |

现在您可以使用=MATCH(FALSE,C2:C6,0)来查找包含第一个非 OK 状态的行。

编辑:Toc 有一个更好的解决方案。

相关内容