我正在尝试在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
答案 0 :(得分:1)
“如果年龄<30且收入=”50-60K“或”40-50K“,则该功能应输出到E栏,说”GroupA“
ElseIf age&gt; 30和gender =“F”然后函数应输出为“B组”Elseif
Ifs
太多了?怎么样?
试试这个
=IF(B2<30,IF(OR(C2="50-60K",C2="40-50K"),"GroupA",""),IF(AND(B2>30,D2="F"),"GroupB",""))
答案 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
根据需要继续添加如果