Fomula for finding BMI

I am having a query, I want to apply a formula based of div and pow^2.

Metric BMI Formula

BMI = weight (kg) / height (mtr)^2

can anyone help me out…

Welcome to the community, @hhfoffice! You could do this as outlined in the image shared below:

In the survey tab of your XLSForm:

Data entry screen as seen in Enketo:

Reference XLSForm:

Calculate BMI.xlsx (9.1 KB)

1 Like

How to show the BMI categories. Seeking formula…

BMI Weight Status

Below - 18.5 - Underweight
18.5 – 24.9 - Healthy Weight
25.0 – 29.9 - Overweight
30.0 and Above - Obesity

@hhfoffice, you could do it by adding an if-statement as shown in the image below:

In the survey tab of your XLSForm:

Data entry screen as seen in Enketo:

Reference XLSForm:

Calculate BMI.xlsx (9.2 KB)

1 Like


The error

@hhfoffice, did you try out the exact file I shared? It works perfectly for me. If you have modified the file and used it, please ensure the correct variables that have been used.

if(${C1}<16.0,‘Very Severely Underweight’,if((${C1}>=16.1 and ${C1}<16.9),‘Severely Underweight’,if((${C1}>=17.1 and ${C1}<18.4),‘Underweight’,if((${C1}>=18.5 and ${C1}<24.9),‘Healthy Weight’,if((${C1}>=25.0 and ${C1}<30.0),‘Over Weight’,if(${C1}>30.0,‘Obese’,if((${C1}>=30.0 and ${C1}<34.9),‘Moderately Obese’,if((${C1}>=35.0 and ${C1}<39.9),‘Severely Obese’,if(${C1}>30.0,‘Very Severely Obese’,’’)))))))))

Bit modified in the formula which you have provided me, the above you can see

if(${C1}<16.0,‘Very Severely Underweight’,if((${C1}>=16.1 and ${C1}<16.9),‘Severely Underweight’,if((${C1}>=17.1 and ${C1}<18.4),‘Underweight’,if((${C1}>=18.5 and ${C1}<24.9),‘Healthy Weight’,if((${C1}>=25.0 and ${C1}<30.0),‘Over Weight’,if(${C1}>30.0,‘Obese’,if((${C1}>=30.0 and ${C1}<34.9),‘Moderately Obese’,if((${C1}>=35.0 and ${C1}<39.9),‘Severely Obese’,if(${C1}>40.0,‘Very Severely Obese’,’’)))))))))

This is working till Obese after that it’s reaming Obese only…

@hhfoffice, maybe try this out:

if(${C1}<16.0,‘Very Severely Underweight’,if((${C1}>=16.1 and ${C1}<16.9),‘Severely Underweight’,if((${C1}>=17.1 and ${C1}<18.4),‘Underweight’,if((${C1}>=18.5 and ${C1}<24.9),‘Healthy Weight’,if((${C1}>=25.0 and ${C1}<30.0),‘Over Weight’,if((${C1}>=30.0 and ${C1}<34.9),‘Moderately Obese’,if((${C1}>=35.0 and ${C1}<39.9),‘Severely Obese’,if(${C1}>40.0,‘Very Severely Obese’,’’))))))))

But please ensure the range too as I feel the range should be something as shown below (the range you have used for me is like missing or sometimes overlapping):

<16.0 OK
>=16.1 to <16.9 Maybe it should be >=16.0 to <=16.9
>=17.1 to <18.4 Maybe it should be >=17.0 to <=18.4
>=18.5 to <24.9 Maybe it should be >=18.5 to <=24.9
>=25.0 to <30.0 Maybe it should be >=25.0 to <=29.9
>=30.0 to <34.9 Maybe it should be >=30.0 to <=34.9
>=35.0 to <39.9 Maybe it should be >=35.0 to <=39.9
>40.0 OK

1 Like

Now it’s working. Thank you…

1 Like