M · UDF
fnClassificacaoIMC
Classifica o IMC pelas faixas da OMS, em código ordenável ou pelo nome da faixa.
Categoria: SaúdeTipo: UDFVersão: v2.0Fonte: Paulo André Jesus — OfficeTuning · faixas: OMSAtualizado em: 25/09/2026
Documentação completa na Function Library →Sintaxe
fnClassificacaoIMC(IMC as nullable number, optional Rotulo as nullable logical) as nullable textArgumentos
| Nome | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| IMC | nullable number | Sim | Índice de massa corporal. |
| Rotulo | nullable logical | Não | true devolve o nome da faixa; omitido devolve o código XX-Y. |
Retorno
nullable text
Código completo
let
fnClassificacaoIMC = (IMC as nullable number, optional Rotulo as nullable logical) as nullable text =>
let
// {limite superior (exclusivo), código, rótulo}
vFaixas = {
{17, "01-7", "Magreza moderada a grave"},
{18.5, "02-6", "Magreza leve"},
{25, "03-5", "Peso normal"},
{30, "04-4", "Pré-obesidade"},
{35, "05-3", "Obesidade grau I"},
{40, "06-2", "Obesidade grau II"},
{Number.PositiveInfinity, "07-1", "Obesidade grau III"}
},
vFaixa = List.First(List.Select(vFaixas, each IMC < _{0}), null)
in
if IMC = null or vFaixa = null then null
else if Rotulo = true then vFaixa{2}
else vFaixa{1},
Documentacao = [
Documentation.Name = "fnClassificacaoIMC",
Documentation.Description = "Classifica o IMC pelas faixas da OMS.",
Documentation.LongDescription = "Retorna o código XX-Y (XX sobe com o IMC; Y é a ordem invertida) ou, com Rotulo = true, o nome da faixa. IMC null retorna null.",
Documentation.Category = "Saúde",
Documentation.Author = "Paulo André Jesus",
Documentation.Version = "2.0",
Documentation.Examples = {
[Description = "Código", Code = "fnClassificacaoIMC(22)", Result = """03-5"""],
[Description = "Rótulo", Code = "fnClassificacaoIMC(37, true)", Result = """Obesidade grau II"""],
[Description = "Nulo", Code = "fnClassificacaoIMC(null)", Result = "null"]
}
]
in
Value.ReplaceType(fnClassificacaoIMC, Value.ReplaceMetadata(Value.Type(fnClassificacaoIMC), Documentacao))Exemplos
fnClassificacaoIMC(22)
// "03-5"
fnClassificacaoIMC(37, true)
// "Obesidade grau II"Dicas e observações
💡 Faixas: < 17 magreza moderada a grave (01-7) · 17–18,4 magreza leve (02-6) · 18,5–24,9 peso normal (03-5) · 25–29,9 pré-obesidade (04-4) · 30–34,9 obesidade I (05-3) · 35–39,9 obesidade II (06-2) · ≥ 40 obesidade III (07-1). ⚠️ No código XX-Y, Y é só a ordem invertida — não mede risco: magreza e obesidade grave estão nas duas pontas.