0

我正在尝试在 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

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

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

“如果年龄<30 且收入=“50-60K”或“40-50K”,则该函数应输出到 E 列,显示“GroupA”

ElseIf age>30 and gender="F" then function 应该将其输出为“group 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
4

2 回答 2

1

“如果年龄<30 且收入=“50-60K”或“40-50K”,则该函数应输出到 E 列,显示“GroupA”

ElseIf age>30 and gender="F" then function 应该将其输出为“group B” Elseif

太多了Ifs?如何?

试试这个

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

在此处输入图像描述

于 2013-11-09T22:55:42.057 回答
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

继续根据需要添加任意数量的If

于 2013-11-09T23:50:35.187 回答