UDF用于Excel中每行的不同if计算

时间:2013-11-09 22:47:24

标签: excel vba

我正在尝试在Excel VBA中创建用户定义的函数来检查一行中的每个单元格并输出答案。这是一个例子:

A       B       C       D
Name    Age Income  Gender
Adam    28  50-60K  M
John    32  40-50K  M
Maria   65  20-30K  F
Ben     22  50-60K  M
Jen     45  60-70K  F

在上面的数组中,我希望能够将每一行传递给函数。该函数应根据某些“if”条件为每个人输出一个组名。我怎么能这样做?

此外,科恩。 C和科恩。 D是TEXT字段而Coln B不是。分组条件示例如下:

“如果年龄<30且收入=”50-60K“或”40-50K“,则该功能应输出到E栏,说”GroupA“

ElseIf age&gt; 30和gender =“F”然后函数应将其输出为“B组” Elseif

我知道这可以使用标准的Excel嵌套Ifs来完成,但是我的条件太多了,而Excel表示当我在公式栏中编写它们时有太多条件。

我的代码如下,但我不确定我做错了什么。

Function Trial(Range)

Dim r As Long

r = ActiveCell.Row

For Each Cell In Range

If Cells(r, 2).Value < 30 And Cells(r, 3).Value = "50-60k" Or Cells(r, 3).Value = "40-50k" Then
Trial= "Group A"
ElseIf Cells(r, 2).Value > 30 And Cells(r, 4).Value ="F" Then
Trial= "Group B"
End If

Next Cell

End Function

2 个答案:

答案 0 :(得分:1)

  

“如果年龄<30且收入=”50-60K“或”40-50K“,则该功能应输出到E栏,说”GroupA“

     

ElseIf age&gt; 30和gender =“F”然后函数应输出为“B组”Els​​eif

Ifs太多了?怎么样?

试试这个

=IF(B2<30,IF(OR(C2="50-60K",C2="40-50K"),"GroupA",""),IF(AND(B2>30,D2="F"),"GroupB",""))

enter image description here

答案 1 :(得分:0)

如果您真的需要UDF,那么在E2中输入:

<强> =试验(A2:D2)

和UDF语法如:

Public Function Trial(r As Range) As String
    Trial = ""
    If r(2) < 30 And (r(3) = "50-60k" Or r(3) = "40-50k") Then
        Trial = "GroupA"
    End If
End Function

根据需要继续添加如果