[Excel関数]日本健康・栄養研究所の式により基礎代謝量を計算するBMRNIHNカスタムワークシート関数
2020年12月6日
概要
BMRNIHNカスタムワークシート関数は、国立健康・栄養研究所(Ganpule(ガンプール))の式により、1日の基礎代謝量(Basal metabolic rate = BMR)を計算します。他の計算方法で基礎代謝量を計算した場合は、下記のページを参照して下さい。
- BMRDRIカスタムワークシート関数:厚生労働省「日本人の食事摂取基準」の式
- BMRHBカスタムワークシート関数:Harris-Benedict(ハリス-ベネディクト)の式
- BMRSFカスタムワークシート関数:Schofield(スコフィールド)の式
- BMRWHOカスタムワークシート関数:FAO/WHO/UNIの式
動作例
機能
性別、体重(kg)、身長(cm)及び年齢より、1日の基礎代謝量(kcal/日)を算出します。この関数で使用している計算方法は、年齢が17歳以下または80歳以上の場合、計算結果の妥当性が保証されておりません。
計算式
基礎代謝量\((kcal/day)\)の計算式を下記に示します。
\(\large{男性 =} \Large{ \frac{(0.0481W + 0.0234H – 0.0138A – 0.4235) × 1000}{4.186}} \)
\(\large{女性 =} \Large{ \frac{(0.0481W + 0.0234H – 0.0138A – 0.9708) × 1000}{4.186}} \)
\( H:身長(cm) \)
\( A:年齢(年) \)
\( 4.186:カロリーとジュールの換算比 \)
構文
BMRNIHN(性別, 体重, 身長, 年齢, 妥当性が検証された年齢のみ計算 )
引数 | 説明 | 引数の指定 | 既定値 |
---|---|---|---|
性別 | 性別を整数または文字列で指定します。整数の場合は、男性が1、女性が2です。 文字列の場合は、文字列の先頭文字が"男","M"又は"m"の場合は男性、"女","F"又は"f"の場合は女性として処理します。 | 必須 | (無し) |
体重 | 体重をkgで指定します。 | 必須 | (無し) |
身長 | 身長をcmで指定します。 | 必須 | (無し) |
年齢 | 年齢を年で指定します。0以上の数値を入力して下さい。 | 必須 | (無し) |
妥当性が検証された年齢のみ計算 | 妥当性が検証された年齢(18~79歳)のみを計算する場合はTrue、それ以外の場合はFalseを指定します。 この引数にTrueを指定した場合、引数Ageに17以下または80以上の値を指定すると#NUM!が返ります。 Falseを指定した場合、引数Ageの値に関わらず基礎代謝量を計算します。 | 省略可能 | True |
コード
下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。' [Excel関数]日本健康・栄養研究所の式により基礎代謝量を計算するBMRNIHNカスタムワークシート関数
' Copyright (c) 2020-2024 黒箱
' This software is released under the GPLv3.
' このソフトウェアはGNU GPLv3の下でリリースされています。
'* @fn Public Function BMRNIHN(ByVal Sex As Variant, ByVal Weight As Double, ByVal Height As Double, ByVal Age As Double, Optional ValidatedAge As Boolean = True) As Variant
'* @brief 日本健康・栄養研究所の式により、基礎代謝量(Basal metabolic rate = BMR)を算出します。
'* @param[in] Sex 性別を整数または文字列で指定します。整数の場合は、男性が1、女性が2です。文字列の場合は、文字列の先頭文字が"男","M"又は"m"の場合は男性、"女","F"又は"f"の場合は女性として処理します。
'* @param[in] Weight 体重をkgで指定します。
'* @param[in] Height 身長をcmで指定します。
'* @param[in] Age 年齢を年で指定します。0以上の数値を指定してください。
'* @param[in] ValidatedAge 妥当性が検証された年齢(18~79歳)のみを計算する場合はTrue、それ以外の場合はFalseを指定します。この引数にTrueを指定した場合、引数Ageに17以下または80以上の値を指定すると#NUM!が返ります。Falseを指定した場合、引数Ageの値に関わらず基礎代謝量を計算します。
'* @return Variant 基礎代謝量をkcal/dayで返します。
'* @details
'* @note 計算式参照元:厚生労働省「日本人の食事摂取基準(2020年版)」p72 表4
Public Function BMRNIHN(ByVal Sex As Variant, ByVal Weight As Double, ByVal Height As Double, ByVal Age As Double, Optional ValidatedAge As Boolean = True) As Variant
Const UNKNOWN_GENDER = 0
Const MALE As Long = 1 '男性
Const FEMALE As Long = 2 '女性
'妥当性が確認された年齢のみ計算
If (ValidatedAge) Then
If ((Age < 18) Or (79 < Age)) Then
BMRNIHN = CVErr(2036) 'CVErr(2036) '#NUM!
Exit Function
End If
End If
'男女の判別
Dim SexNo As Long
If (VarType(Sex) = vbString) Then
Select Case (Left(UCase(Sex), 1))
Case "男", "M": SexNo = MALE
Case "女", "F": SexNo = FEMALE
Case Else: SexNo = UNKNOWN_GENDER
End Select
Else
SexNo = CLng(Sex)
If ((SexNo <> MALE) And (SexNo <> FEMALE)) Then SexNo = UNKNOWN_GENDER
End If
If (SexNo = UNKNOWN_GENDER) Then
BMRNIHN = CVErr(2036) 'CVErr(2036) '#NUM!
Exit Function
End If
'年齢がマイナスの場合は計算不可
If (Age < 0) Then
BMRNIHN = CVErr(2036) 'CVErr(2036) '#NUM!
Exit Function
End If
'BMR計算
Dim ConstantTerm As Double
If (SexNo = MALE) Then
ConstantTerm = 0.4235
Else
ConstantTerm = 0.9708
End If
BMRNIHN = ((0.0481 * Weight) + (0.0234 * Height) - (0.0138 * Age) - ConstantTerm) * 1000 / 4.186
End Function
プログラムの利用について
本プログラムのライセンスは「GPL-3.0(GNU General Public License version 3)」を適用しています。
本プログラムを私的に利用(個人利用、並びに企業またはその他の組織の内部利用)される方は、本プログラムを無償で利用できると考えて差し支え御座いません。その場合でも、本プログラム内の著作権及びライセンスの表示は削除せずに表示しておいて下さい。
その他の方は、GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)バージョン3の内容をご理解頂き、適正な利用をお願い致します。同ライセンス以外での利用をご希望の方はお問い合わせフォームよりご連絡下さい。
本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡下さい。
スポンサーリンク
Excelカスタム関数GPLv3,カスタムワークシート関数,栄養学
Posted by 黒箱
この記事のトラックバックURL
スポンサーリンク
カテゴリー
スポンサーリンク
-
ホーム -
上へ
ディスカッション
コメント一覧
まだ、コメントがありません