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

上記の配列では、各行を関数に渡すことができるようにしたいと考えています。関数は、いくつかの「if」条件に基づいて、これらの各ユーザーのグループ名を出力する必要があります。これどうやってするの?

あとコルン。CとColn. D は TEXT フィールドですが、Coln B はそうではありません。グループ化条件の例は次のとおりです。

「年齢が 30 歳未満で収入が「50-60K」または「40-50K」の場合、関数は列 E に「グループ A」と出力する必要があります。

ElseIf 年齢 > 30 および性別 = "F" の場合、関数はそれを「グループ B」として出力する必要があります Elseif

これは標準の Excel の入れ子になった If で実行できることはわかっていますが、条件が多すぎて、数式バーに条件を書き込むと、条件が多すぎると 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

"If age<30 and income="50-60K"or"40-50K" then the function should output to column E saying "GroupA"

ElseIf age>30 and gender="F" then function should output it as "group B" Elseif

Too many Ifs? How?

Try this

=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 に答える