给了一个数据求数值在范围内求对应的得分

输入体重的bmi值最后得出得分的百分值

根据表的情况来看,不能只是输入一个体重值,而是需要输入3个值:体重,性别,年级,由此我编写了一个函数,使用过程中需要注意以下几点:

1、调用格式:在单元格中输入=BMIScore(25,"F",1),其中25是体重,第二个参数是性别,可输入F或M,第三个参数是年级,用1表示初一,2表示初二

2、代码需要放到excelVBA窗口中,在excel中按alt+F11可打开VBA窗体

3、插入/模块,新创建一个模块,然后将代码复制到该模块中,在此模块中的函数才能在excel中像其他函数一样使用。

以下为具体代码,如果格式不太好看,你可以再见最后的图片:

' 体重指数单项评分函数

Function BMIScore(weight As Double, sex As String, class As Integer) As Integer

    Dim result As Integer

    

    Select Case sex

        Case "F":   ' 性别=女

            Select Case class

                Case 1:     ' 初一

                    Select Case weight

                        Case Is <= 14.7

                            result = 80

                        Case 14.8 To 21.7

                            result = 100

                        Case 21.8 To 24.4

                            result = 80

                        Case Is >= 24.5

                            result = 60

                    End Select

                Case 2:     ' 初二

                    Select Case weight

                        Case Is <= 15.2

                            result = 80

                        Case 15.3 To 22.2

                            result = 100

                        Case 22.3 To 24.8

                            result = 80

                        Case Is >= 24.9

                            result = 60

                    End Select

            End Select

        Case "M":   ' 性别=男

            Select Case class

                Case 1:     ' 初一

                    Select Case weight

                        Case Is <= 15.4

                            result = 80

                        Case 15.5 To 22.1

                            result = 100

                        Case 22.2 To 24.9

                            result = 80

                        Case Is >= 25

                            result = 60

                    End Select

                Case 2:     ' 初二

                    Select Case weight

                        Case Is <= 15.6

                            result = 80

                        Case 15.7 To 22.5

                            result = 100

                        Case 22.6 To 25.2

                            result = 80

                        Case Is >= 25.3

                            result = 60

                    End Select

            End Select

    End Select

    BMIScore = result

End Function

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-06-17

在 Excel 2007 中,可以用以下公式满足题述要求(以所拟表为例):
1. 得分公式:=IF(AND(AND(D2>=15.5,D2<=22.1),B2="男",C2="初一"),100,IF(AND(AND(D2>=15.7,D2<=22.5),B2="男",C2="初二"),100,IF(AND(AND(D2>=14.8,D2<=21.7),B2="女",C2="初一"),100,IF(AND(AND(D2>=15.3,D2<=22.2),B2="女",C2="初二"),100,IF(AND(D2<=15.4,B2="男",C2="初一"),80,IF(AND(D2<=15.6,B2="男",C2="初二"),80,IF(AND(D2<=14.7,B2="女",C2="初一"),80,IF(AND(D2<=14.7,B2="女",C2="初二"),80,IF(AND(D2<=15.2,B2="女",C2="初二"),80,IF(AND(AND(D2>=22.2,D2<=24.9),B2="男",C2="初一"),80,IF(AND(AND(D2>=22.6,D2<=25.2),B2="男",C2="初二"),80,IF(AND(AND(D2>=21.8,D2<=24.4),B2="女",C2="初一"),80,IF(AND(AND(D2>=22.3,D2<=24.8),B2="女",C2="初二"),80,IF(AND(D2>=25,B2="男",C2="初一"),60,IF(AND(D2>=25.3,B2="男",C2="初一"),60,IF(AND(D2>=24.5,B2="女",C2="初一"),60,IF(AND(D2>=24.9,B2="女",C2="初二"),60)))))))))))))))))
2. 等级公式:=IF(AND(AND(D2>=15.5,D2<=22.1),B2="男",C2="初一"),"正常",IF(AND(AND(D2>=15.7,D2<=22.5),B2="男",C2="初二"),"正常",IF(AND(AND(D2>=14.8,D2<=21.7),B2="女",C2="初一"),"正常",IF(AND(AND(D2>=15.3,D2<=22.2),B2="女",C2="初二"),"正常",IF(AND(D2<=15.4,B2="男",C2="初一"),"低体重",IF(AND(D2<=15.6,B2="男",C2="初二"),"低体重",IF(AND(D2<=14.7,B2="女",C2="初一"),"低体重",IF(AND(D2<=14.7,B2="女",C2="初二"),"低体重",IF(AND(D2<=15.2,B2="女",C2="初二"),"超重",IF(AND(AND(D2>=22.2,D2<=24.9),B2="男",C2="初一"),"超重",IF(AND(AND(D2>=22.6,D2<=25.2),B2="男",C2="初二"),"超重",IF(AND(AND(D2>=21.8,D2<=24.4),B2="女",C2="初一"),"超重",IF(AND(AND(D2>=22.3,D2<=24.8),B2="女",C2="初二"),"超重",IF(AND(D2>=25,B2="男",C2="初一"),"肥胖",IF(AND(D2>=25.3,B2="男",C2="初一"),"肥胖",IF(AND(D2>=24.5,B2="女",C2="初一"),"肥胖",IF(AND(D2>=24.9,B2="女",C2="初二"),"肥胖")))))))))))))))))

注1:上述“得分公式”与“等级公式”结构完全相同,只是因为“得分”与“等级”的对应关系有重复项,所以采用了这种方式
注2:这是个“吓人”的公式,利用 IF 函数应对这么多的条件,的确够“吓人”

公式的结果如下图示:

公式结果的图示



相似回答