Quantcast
Channel: なんでもエクセル(Nandemo Excel)
Viewing all articles
Browse latest Browse all 60

数式/関数:月齢を指定してカウプ指数を計算する

$
0
0

子どもが産まれたばかりなもので、カウプ指数から肥満度を計算するのに数式でどうやるか考えてみました。

カウプ指数の計算は、BMI値と同じなんですが判定基準が異なります。なので月齢に応じた対応表がまずは必要になります。

こういう表を作る時に注意したいのは、「後でどういう計算をするか」を先に考えてから作るってことです。時々ネットで見つけた表を見たまんまで作ってから「さて、どうしようか」と悩み出す人がいます。

後で計算に使うんだから「生後3か月~16ヶ月未満」みたいな文字列で書いてしまってはいけません。計算に使うなら「数値で入力」「単位は統一」は絶対です。後者については小学校の算数で習ったはずなのに、大人になると忘れてしまう人が結構いますね。

これ絶対です。「ヶ月」は消して、表示形式のユーザー定義で表現しましょう。

今回は判定表にテーブル書式(テーブル名「T_判定表」)を設定していますが、テーブル書式の先頭行は必ず文字列になってしまいますので、「見出し行」はあえて非表示にしています。

対応表ができたら、次は判定表を用意します。これも文字列だけだと使いづらいかもしれませんので、必要あろうがなかろうが横に数値を入れておきましょう。少なくとも入れておいて損することはありません。

ここまでできたら最後に計算表を作ります。

Z3に月齢、Z4に体重、Z5に身長を入力するセルを用意します。分かりやすいようセルに名前定義しておきましょう。

カウプ指数BMI値)
=IF(COUNT(月齢,体重,身長)<3,"",ROUND(体重/身長^2*10,0))

続いて判定。せっかくテーブル書式を設定しても、古いバージョンだとこういう時、ところどころセル番地での参照が入ってしまいますね。

判定
=IF(     OR(月齢<3,月齢>60),     "測定範囲外",     INDEX(         W4:W8,         INDEX(             B4:T10,             MATCH(月齢,A4:A10),             MATCH(カウプ指数,B3:T3)         )     ) )

Microsoft365なら、こんな感じで範囲を指定できるので便利です。

判定(Microsoft365の場合)
=IF(     OR(月齢<3,月齢>60),     "測定範囲外",     INDEX(         T_判定リスト[判定],         INDEX(             DROP(T_対応表,2,1),             MATCH(月齢,DROP(TAKE(T_対応表,,1),1)),             MATCH(カウプ指数,DROP(TAKE(T_対応表,1),,1))         )     ) )

Viewing all articles
Browse latest Browse all 60

Trending Articles