[Excel関数]Harris-Benedictの式により基礎代謝量を計算するBMRHBカスタムワークシート関数

2020年12月6日

概要

カスタムワークシート関数BMRHBは、Harris-Benedict(ハリス-ベネディクト)の式により、1日の基礎代謝量(Basal metabolic rate = BMR)を計算します。他の計算方法で基礎代謝量を計算した場合は、下記のページを参照して下さい。

動作例

機能

性別、体重(kg)、身長(cm)及び年齢より、1日の基礎代謝量(kcal/日)を算出します。計算方法は下記の3種類に対応しています。

  • 1918年と1919年に公開されたオリジナルの計算方法
  • 1984年にRozaとShizgalによって改訂された計算方法
  • 1990年にMifflinとStJeorによって改訂された計算方法

計算式

計算方法男性の基礎代謝量 \( (kg/day) \)女性の基礎代謝量 \( (kg/day) \)
1918年と1919年に公開されたオリジナルの計算方法$$ 66.4730 + 13.7516W + 5.0033H – 6.755A $$$$ 655.0955 + 9.5634W + 1.8496H – 4.6756A $$
1984年にRozaとShizgalによって改訂された計算方法$$ 88.362 + 13.397W + 4.799H – 5.677A $$$$ 447.593 + 9.247W + 3.098H – 4.33A $$
1990年にMifflinとStJeorによって改訂された計算方法$$ 10W + 6.25H – 5A + 5 $$$$ 10W + 6.25H – 5A -161 $$
\( W:体重(kg) \)
\( H:身長(cm) \)
\( A:年齢(年) \)

構文

BMRHB(性別, 体重, 身長, 年齢, 計算方法 )

引数説明引数の指定既定値
性別性別を整数または文字列で指定します。整数の場合は、男性が1、女性が2です。
文字列の場合は、文字列の先頭文字が"男","M"又は"m"の場合は男性、"女","F"又は"f"の場合は女性として処理します。
必須(無し)
体重体重をkgで指定します。必須(無し)
身長身長をcmで指定します。
年齢年齢を年で指定します。0以上の数値を入力して下さい。必須(無し)
計算方法計算方法を整数で指定します。既定値は0です。
 0:現在関数が対応している最新の計算方法(3と同等)。
 1:1918年と1919年に公開されたオリジナルの計算方法。
 2:1984年にRozaとShizgalによって改訂された計算方法。
 3:1990年にMifflinとStJeorによって改訂された計算方法。
省略可能0

コード

下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。
' [Excel関数]Harris-Benedictの式により基礎代謝量を計算するBMRHBカスタムワークシート関数 
' Copyright (c) 2020-2024  黒箱 
' This software is released under the GPLv3. 
' このソフトウェアはGNU GPLv3の下でリリースされています。 

'* @fn Public Function BMRHB(ByVal Sex As Variant, ByVal Weight As Double, ByVal Height As Double, ByVal Age As Double, Optional ByVal CalculationMethod As Long = 0) 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] CalculationMethod 計算方法を整数で指定します。既定値は0です。0:現在関数が対応している最新の計算方法。1:1918年と1919年に公開されたオリジナルの計算方法。2:1984年にRozaとShizgalによって改訂された計算方法。3:1990年にMifflinとStJeorによって改訂された計算方法。
'* @return Variant 基礎代謝量をkcal/dayで返します。
'* @details CalculationMethodに0を指定すると、現在は3を指定した場合と同じ結果を返します。しかし、0は関数が対応する最新の計算方式となるため、将来的に変更される可能性があります。
'* @note https://en.wikipedia.org/wiki/Harris%E2%80%93Benedict_equation
'*
Public Function BMRHB(ByVal Sex As Variant, ByVal Weight As Double, ByVal Height As Double, ByVal Age As Double, Optional ByVal CalculationMethod As Long = 0) As Variant
Const UNKNOWN_GENDER = 0
Const MALE As Long = 1 '男性
Const FEMALE As Long = 2 '女性
    
Const LatestCalcMethod As Long = 3 '最新の計算方法(本関数のバージョンアップ時にこの値は変更される可能性があります)
    
    '男女の判別
    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
        BMRHB = CVErr(2036) 'CVErr(2036) '#NUM!
        Exit Function
    End If
    
    '年齢がマイナスの場合は計算不可
    If (Age < 0) Then
        BMRHB = CVErr(2036) 'CVErr(2036) '#NUM!
        Exit Function
    End If
    
    'BMR計算
    If (CalculationMethod = 0) Then CalculationMethod = LatestCalcMethod
    
    Dim Result As Double
    If (SexNo = MALE) Then
        Select Case (CalculationMethod)
        Case 1:     Result = 66.473 + (Weight * 13.7516) + (Height * 5.0033) - (Age * 6.755)
        Case 2:     Result = 88.362 + (Weight * 13.397) + (Height * 4.799) - (Age * 5.677)
        Case 3:     Result = 5 + (Weight * 10) + (Height * 6.25) - (Age * 5)
        Case Else:  Result = CVErr(2036)
        End Select
    
    Else
    
        Select Case (CalculationMethod)
        Case 1:     Result = 655.0955 + (Weight * 9.5634) + (Height * 1.8496) - (Age * 4.6756)
        Case 2:     Result = 447.593 + (Weight * 9.247) + (Height * 3.098) - (Age * 4.33)
        Case 3:     Result = -161 + (Weight * 10) + (Height * 6.25) - (Age * 5)
        Case Else:  Result = CVErr(2036)
        End Select
    End If
    
    BMRHB = Result
    
End Function

プログラムの利用について

本プログラムのライセンスは「GPL-3.0(GNU General Public License version 3)」を適用しています。

本プログラムを私的に利用(個人利用、並びに企業またはその他の組織の内部利用)される方は、本プログラムを無償で利用できると考えて差し支え御座いません。その場合でも、本プログラム内の著作権及びライセンスの表示は削除せずに表示しておいて下さい。

その他の方は、GNU 一般公衆利用許諾書(GNU GENERAL PUBLIC LICENSE)バージョン3の内容をご理解頂き、適正な利用をお願い致します。同ライセンス以外での利用をご希望の方はお問い合わせフォームよりご連絡下さい。

本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡下さい。

スポンサーリンク