繁体   English   中英

UDF for If语句具有多个组件

[英]UDF for If statement with multiple components

我正在尝试创建一个函数(= StatusExpected),该函数在评估多个组件后将返回通过/失败。 具体来说,四个组成部分(大小,流动性,资格,例外)返回“通过/失败”。 如果所有四个都返回“ Pass”,我希望StatusExpected =“ Pass”。 如果这些组件中的一个或多个返回“失败”,则我希望StatusExpected =“ Fail”。

StatusExpected填充I7:I506,四个变量分别填充在每一行中,分别在J,AB,AF,AP中。 我认为这并不重要,因为我正在寻找具有四个输入的函数。

以下是我无法正常工作的内容:

Function StatusExpected(Size As String, Liquidity As String, Qualified As String, Exception As String)
    Range("A1").Select.Activate
    If Size = "Pass" And Liquidity = "Pass" And Qualified = "Pass" And Exception = "Pass" Then
        StatusExpected = "Pass"
    Else
        StatusExpected = "Fail"
    End If
End Function

如果可以的话,还请回答是否需要激活单元格,或者是否需要定义变量。 请从“功能”行开始,从头开始编写代码,就好像没有其他内容一样,除了为我提供问题和最佳做法(为清楚起见)之外,还为我提供任何可以帮助我的东西。

开始:

.Select.Activate

语法无效。 应该是其中之一。 但是,在大多数情况下,这是不必要的操作,它会影响性能(通常对于小型操作而言并不明显,但是出于良好编码习惯的考虑,应避免使用.Select.Activate

所以你的功能:

Function StatusExpected(Size As String, Liquidity As String, Qualified As String, Exception As String)
    If Size = "Pass" And Liquidity = "Pass" And Qualified = "Pass" And Exception = "Pass" Then
        StatusExpected = "Pass"
    Else
        StatusExpected = "Fail"
    End If
End Function

为我工作(Excel 2013)。

我注意到的一件事是此函数区分大小写。 考虑J,AB,AF,AP列中的以下数据:

+------+------+------+------+
| Pass | Pass | Pass | Pass |
+------+------+------+------+
| PASS | PASS | PASS | PASS |
+------+------+------+------+

您的函数将在第一行返回Pass ,但在第二行返回Fail ,因为默认情况下文本比较区分大小写。

更改的一种方法是在代码顶部添加“ Option Compare Text行,这将使文本比较不区分大小写。 因此,如果您这样做:

Option Compare Text

Function StatusExpected(Size As String, Liquidity As String, Qualified As String, Exception As String)
    If Size = "Pass" And Liquidity = "Pass" And Qualified = "Pass" And Exception = "Pass" Then
        StatusExpected = "Pass"
    Else
        StatusExpected = "Fail"
    End If
End Function

上面设置的数据在两种情况下都将返回Pass

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM