问题是这样的...... 考虑具有以下值的列
A2通行证
A3通行证
A4通行证
A5 Pass
A6通行证
A7是整体状态单元,它根据A2和A6之间的单元格中的值而不同。
A7中值的条件应为以下
如果A2和A6之间的单元格中的所有值都是Pass,则A7应为Pass
如果A2和A6之间的单元格中的其中一个值为Fail,则A7应为Fail
如果A2和A6之间的单元格中的一个值是“No Run”或“Not completed”或“Not Applicable”,则单元格A7必须具有“Not completed”
请将整个代码发送给我vba脚本,并将其嵌入excel或其中的公式。
如果我的提问有点太多,我很抱歉,但你的帮助对我有很大的帮助。
提前致谢
SS
答案 0 :(得分:1)
这是另一种方法:编写代码来创建自定义公式。在VBE(Visual Basic编辑器,通过 ALT + F11 访问)中,添加一个新模块,并在其中粘贴以下代码:
Function Outcome(ResultRange As Range) As String
Dim Cell As Range
Dim Result As String
Result = "Pass"
For Each Cell In ResultRange
If Cell.Value = "Fail" Then
Result = "Fail"
Exit For
ElseIf Cell.Value = "No Run" Or Cell.Value = "Not completed" Or Cell.Value = "Not Applicable" Then
Result = "Not completed"
End If
Next Cell
Outcome = Result
End Function
完成此操作后,您可以从电子表格访问名为OUTCOME
的新功能(您可以通过查看我的代码的第一行来重命名它)。如果输入公式
=OUTCOME(A2:A6)
你会得到你想要的结果。请注意,空格以及除了您提到的值之外的任何内容都将被视为与“通过”相同。如果您愿意,那就不难改变。
答案 1 :(得分:0)
您可以将其作为公式实现,而不是使用VBA。在单元格A7中输入以下内容:
=IF(COUNTIF(A2:A6,"No"&"*"),"Not Completed",IF(COUNTIF(A2:A6,"Pass")=5,"Pass",IF(COUNTIF(A2:A6,"Fail"),"Fail","Not accounted for scenario")))
正如之前建议的那样,您可能需要根据应优先使用哪些规则来更改if
语句的顺序。
正如其他人所说的那样,你应该真正尝试一个解决方案,并在你陷入困境时分享,分享你已经尝试过的东西。请记住这一点以备将来使用。我建议您了解上述内容,您在Excel中研究COUNTIF
和IF
函数(快速的Google会显示大量资源)。
答案 2 :(得分:0)
这应该在A7中:
= IF(AND((A2 ="通行证&#34),(A3 ="通行证&#34),(A4 ="通行证&#34),(A5 = " Pass"),(A6 =" Pass"))," True",IF(OR((A2 ="未完成") ,(A3 ="未完成"),(A4 ="未完成"),(A5 ="未完成"),(A6 ="未完成")),"未完成",IF(或(A2 ="不适用"),(A3 ="不适用"), (A4 ="不适用"),(A5 ="不适用"),(A6 ="不适用")),"未完成&# 34;,IF(或(A2 =" No Run"),(A3 =" No Run"),(A4 =" No Run"),( A5 =" No Run"),(A6 =" No Run")),"未完成","未定义"))) )
这是抽出的版本,可能是大多数人在学习时开始的版本。有一个未定义的地方,你没有提到如果你所解释的情况之外会发生什么会发生什么 我鼓励你阅读IF语句。您可能会再次遇到它们,即使是少量的研究也可能有很长的路要走。如果您对IF语句感到满意,请查看CountIF和VLookup。如果你在excel中做得很多,你可能会遇到这两种情况。
祝你好运!