2017-05-21 141 views
-3

免责声明:我既不是Excel中的专家,也不是vba中的专家。所以我需要你的帮助来解决这个问题。Excel vlookup循环

的问题是这样的...... 考虑具有以下值

A2证

A3通行证

A4通

A5通

A6通栏

A7是总体状态单元格,它基于A2和A6之间的单元格中的值不同。

在A7为值的条件应该是以下

  1. 如果在A2和A6之间的细胞的所有值均为通行证然后A7应通行证

  2. 如果即使在值中的一个A2和A6之间的单元格是失败的,那么A7应该失败

  3. 如果即使A2和A6之间的单元格中的值之一为“无运行”或“未完成”或“不适用”,那么单元格A7必须具有'未完成'

请给我发送vba脚本的完整代码,并将其嵌入到excel或此公式中。

我很抱歉,如果我的问题太多了,但你的帮助对我来说会有很大的帮助。

在此先感谢

SS

+0

如果** A5 **是*失败*和** A6 **是*否运行*,应遵循哪条规则? –

+3

1. re:'*请给我发送整个代码...... *'这是**不是**免费代码写入服务。如果你不能尝试(并在你的问题上发表你的原始努力,并收到关于错误的具体信息),那么请雇佣一名程序员。 2.这可以用嵌套公式完成;没有必要的VBA要求。你的逻辑有'洞',这在你的叙述中没有定义。 – Jeeped

+3

不!我们不能,我们也不会! “请给我发送整个代码”为什么?我们帮助开发者,不为你工作。 – Baro

回答

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中是如何研究COUNTIFIF函数的(Google会迅速发现大量资源)。

+0

非常感谢。我能够使用countif达到结果。以下是公式。 IF(COUNTIF(H3:H7,“Not Completed”)<> 0,“Not Completed”,IF(COUNTIF(H3:H7) ,“Pass”)= 5,“Pass”,IF(COUNTIF(H3:H7,“”)= 5,“No Run”,“Not Completed”)))) – user8044865

+0

很高兴看到你设法找到解。请考虑标记其中一个答案作为解决方案。 – StevenWalker

0

这应该是A7:

= IF(AND((A2 = “通行证”),(A3 = “通行证”),(A4 = “通行证”),(A5 = “通行证”) (A6 =​​“通过”)),“真”,IF(OR((A2 =“未完成”),(A3 =“未完成”),(A4 =“未完成”),(A5 = (A6 =​​“未完成”)),“未完成”,IF(OR((A2 =“不适用”),(A3 =“不适用”),(A4 =“不适用”)) (A5 =“不适用”),(A6 =​​“不适用”)),“未完成”,IF(OR((A2 =“不运行”),(A3 =“不运行”)),(A4 = (A6 =​​“No Run”)),“Not Completed”,“Not Defined”)))))

这是拉出的版本,可能是大多数人会在学习时从头开始。有一个没有定义的地方,你没有提到如果你之前解释过的情况下会发生什么情况。
我鼓励你阅读IF声明。你可能会再次遇到它们,即使是少量的研究也可能会有很长的路要走。如果您对IF语句感到满意,请查看CountIF和VLookup。如果你在Excel中做的很多,你可能会遇到两种情况。

祝你好运!

+0

非常感谢。我能够使用countif达到结果。以下是公式。IF(COUNTIF(H3:H7,“Not Completed”)<> 0,“Not Completed”,IF(COUNTIF(H3:H7) ,“Pass”)= 5,“Pass”,IF(COUNTIF(H3:H 7,“”)= 5,“No Run”,“Not Completed”)))) - – user8044865

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的新函数(您可以通过chaning我的代码的第一行来重命名它)。如果输入公式

=OUTCOME(A2:A6) 

您会得到您要查找的结果。请注意,空格和除您提到的值之外的任何内容都将被视为“通过”。如果你愿意,这并不难改变。

+0

这是一个更为优雅的解决方案+1 – StevenWalker