Excel, функция if, ifs,

I assume x is the number I'm going to analyze and "y" is as "male" or "female" and "z" is as age group.

x е число, че резултатът ще бъде „поднормено тегло“, здравословно „или наднормено тегло“. но x, което всъщност е BPI, не е едно и също за мъже и жени. например, ако x = 21, тогава зависи от пола и възрастта, то ще бъде категоризирано като „с поднормено тегло“, „здравословно“ или с наднормено тегло.

 Function BAI(x As Integer, y As String, z As Integer) As String


 If x < 21 And y = "female" And 20 <= z <= 39 Then
    BAI = "UNDERWEIGHT"

 Elseif 22 <= x <= 33 And y = "Female" And 20 <= z <= 39 Then
    BAI = "Healthy"

ElseIf 34 <= x <= 38 And y = "Female" And 20 <= z <= 39 Then
    BAI = "overweight"

ElseIf x >= 39 And y = "Female" And 20 <= z <= 39 Then
    BAI = "OBESE"

ElseIf x <= 23 And y = "female" And 40 <= z <= 59 Then
    BAI = "UNDERWEIGHT"

ElseIf 24 <= x <= 35 And y = "female" And 40 <= z <= 59 Then
    BAI = "Healthy"

ElseIf 36 <= x <= 41 And y = "female" And 40 <= z <= 59 Then
    BAI = "Overweight"

ElseIf x >= 42 And y = "female" And 40 <= z <= 59 Then
    BAI = "OBESE"

ElseIf x <= 25 And y = "female" And 60 <= z <= 79 Then
    BAI = "UNDERWEIGHT"

ElseIf 26 <= x <= 38 And y = "female" And 60 <= z <= 79 Then
    BAI = "Healthy"

ElseIf 39 <= x <= 43 And y = "female" And 60 <= z <= 79 Then
    BAI = "Overweight"

ElseIf x >= 44 And y = "female" And 60 <= z <= 79 Then
    BAI = "obese"

ElseIf x <= 8 And y = "male" And 20 <= z <= 39 Then
    BAI = "Underweight"

ElseIf 9 <= x <= 21 And y = "male" And 20 <= z <= 39 Then
    BAI = "Healthy"

ElseIf 22 <= x <= 26 And y = "male" And 20 <= z <= 39 Then
    BAI = "overweight"

ElseIf x >= 27 And y = "male" And 20 <= z <= 39 Then
    BAI = "OBESE"

ElseIf x <= 11 And y = "male" And 40 <= z <= 59 Then
    BAI = "UNDERWEIGHT"

ElseIf 12 <= x <= 23 And y = "male" And 40 <= z <= 59 Then
    BAI = "Healthy"

ElseIf 24 <= x <= 28 And y = "male" And 40 <= z <= 59 Then
    BAI = "Overweight"

ElseIf x >= 29 And y = "male" And 40 <= z <= 59 Then
    BAI = "OBESE"

ElseIf x <= 13 And y = "male" And 60 <= z <= 79 Then
    BAI = "UNDERWEIGHT"

ElseIf 14 <= x <= 25 And y = "male" And 60 <= z <= 79 Then
    BAI = "Healthy"

ElseIf 26 <= x <= 30 And y = "male" And 60 <= z <= 79 Then
    BAI = "Overweight"

 End If

 End Function

person Mehdi Fit    schedule 11.01.2017    source източник
comment
Моля, прочетете Как да питам и редактирайте въпроса си съответно и за по-голяма четливост. Въпросът е много вероятно да бъде затворен във формата, в който е написан.   -  person Scott Holtzman    schedule 11.01.2017
comment
Моля, това, което вече сте опитали, и добре форматиран дисплей, което въвеждате и какво трябва да бъде върнато.   -  person thatsIch    schedule 11.01.2017
comment
Като подсказка, без пример, бих предложил IF() и VLOOKUP() да работят.   -  person Solar Mike    schedule 11.01.2017
comment
@SolarMike Мисля, че имам нужда от VBA за моя случай, имам 3 променливи, които всички са зависими. възраст, пол и BPI. Bpi е число. това число трябва да се анализира въз основа на възрастта и пола на потребителя. напр. хора, чиято възраст е между 20-39, ако са мъже и техният BPI ‹ 8, тогава те са с поднормено тегло за жените е различно. ако са 20-39 и са жени и bpi ‹ 21, тогава те са с поднормено тегло   -  person Mehdi Fit    schedule 12.01.2017
comment
Забелязва се, че сте дали на Алън Уейдж същия отговор, както ми дадохте... Ако поставите данните си в две таблици: на мъж, една на жена, тогава търсенето и т.н. може да работи - голяма част от това зависи от това как структурирате данните си и това също контролира колко лесно е да промените или актуализирате стойностите. ако имате всички твърдо кодирани във функцията, тогава актуализирането на стойност е трудно: стойността на таблицата може да бъде променена бързо, докато изчислението продължава, както е зададено.   -  person Solar Mike    schedule 12.01.2017


Отговори (1)


Можете да получите желания резултат, като използвате функцията на работната книга IF. За да получите множество критерии в едно условие IF, използвайте функциите И() и ИЛИ(). За да създадете логика тип if - elseif, вмъкнете добавените IF() функции в съответните секции. като пример

=IF(OR(AND(A1="Male", A2>20),AND(A1="Female",A2>30)), IF(A3>200,"overweight","healthy"),"otherstuff")

Това трябва да ви накара да тръгнете по правилния път.

person Alan Waage    schedule 11.01.2017
comment
Мисля, че имам нужда от VBA за моя случай, имам 3 променливи, които всички са зависими. възраст, пол и BPI. Bpi е число. това число трябва да се анализира въз основа на възрастта и пола на потребителя. напр. хора, чиято възраст е между 20-39, ако са мъже и техният BPI ‹ 8, тогава те са с поднормено тегло за жените е различно. ако са 20-39 и са жени и bpi ‹ 21, тогава те са с поднормено тегло. - person Mehdi Fit; 12.01.2017
comment
За сложна логика VBA предоставя резултати, които ще бъдат много по-лесни за четене и поддръжка. Просто създайте функция, която приема вашите три променливи като параметри и връща желания резултатен низ. След това извикайте тази функция в клетката. - person Alan Waage; 18.01.2017