• ベストアンサー

エクセルで困ってます

体重と標準体重の比が (体重をW、標準体重をQとしてください) 0.9未満なら、やせ気味 0.9以上1.1未満なら、標準 1.1以上なら、太り気味 これをVLOOKUPで求めるには、どうしたらいいですか?  1   A      B      C      2   比    肥満度  3   0    やせ気味  4   0.9    標準     5   1.1   太り気味

質問者が選んだベストアンサー

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.2

 今仮に、W2セルに体重が入力されていて、Q2セルに体重が入力されているものとします。  そして、W2セルとQ2セルの値を基にして、御質問通りの判定を行う場合には、次の様な関数となります。 =IF(COUNT($Q2,$W2)=2,VLOOKUP($W2/$Q2,$A$3:$B$5,2),"")  それから、身長と体重から、やせているのか、肥っているのかを判定する目安として使用される値には、BMI(ボディマス指数)やローレル指数など、幾つかの種類があります。  そこで、BMIやローレル指数を使用すれば、A2:B5の表を使わずに、痩せているのか、肥っているのかを判定する事も出来ます。  今仮に、H2セルにcm単位で測った身長が入力されていて、W2セルにkg単位で量った体重が入力されているものとします。  成人に対しては主にBMIが判定の目安として使用され、日本肥満学会では、BMIの値が22の場合を標準体重としており、25以上の場合を肥満、18.5未満である場合を低体重としていて、WHOでは30以上を「肥満 (obese)」、16未満を「痩せ過ぎ(Severe thinness)」としている様です。 【参考URL】  ボディマス指数 - Wikipedia   http://ja.wikipedia.org/wiki/%E3%83%9C%E3%83%87%E3%82%A3%E3%83%9E%E3%82%B9%E6%8C%87%E6%95%B0  WHO :: Global Database on Body Mass Index   http://apps.who.int/bmi/index.jsp?introPage=intro_3.html  この事から、BMIの値が 16未満の場合に、やせ過ぎ、 16以上、18.5未満の場合に、やせ気味、 18.5以上、25未満の場合に、適正範囲、 25以上、30未満の場合に、肥り気味、 30以上の場合に、肥り過ぎ と表示させるものとした場合には、その関数は次の様なものとなります。 =IF(COUNT($H2,$W2)=2,LOOKUP($W2*10000/$H2^2,{0,16,18.5,25,30;"やせ過ぎ","やせ気味","適正範囲","肥り気味","肥り過ぎ"}),"")  学童期の児童(成長期の人間)に対しては、主にローレル指数が判定の目安として使用され、その値が130の場合を標準体重とし、 130のプラスマイナス15未満の範囲が適正範囲、 100以下が痩せ過ぎ 160以上が肥り過ぎ とされている様です。 【参考URL】  ローレル指数 - Wikipedia   http://ja.wikipedia.org/wiki/%E3%83%AD%E3%83%BC%E3%83%AC%E3%83%AB%E6%8C%87%E6%95%B0  この事から、ローレル指数の値が 100以下の場合に、やせ過ぎ、 100を超えて、115以下の場合に、やせ気味、 115を超えて、145未満の場合に、適正範囲、 145以上、160未満の場合に、肥り気味、 160以上の場合に、肥り過ぎ と表示させるものとした場合には、その関数は次の様なものとなります。 =IF(COUNT($H2,$W2)=2,IF($W2*10000000/$H2^3>115,IF($W2*10000000/$H2^3<145,"適正範囲","肥り"),"やせ")&LOOKUP(ABS($W2*10000000/$H2^3-130),{0,15,30;"","気味","過ぎ"}),"")

その他の回答 (1)

回答No.1

VLOOKUP関数ですか、「検索の型」省略またはTRUEにすると、検索値未満となりますのでできないとはいえませんが、IF(   ,    ,IF(  ,  ,  ))の方が簡単ではないでしょうか。

関連するQ&A

  • エクセルで表に当てはめて数値を返す方法を教えてください

     A   B    C      D 10   3    7      3 20   4    8      3 30   5    12     4           25     4 といった表があるとします。列A、Bは自分で入力します。列Cは計算で算出します。 このとき、Cの値をAに当てはめて、(例えば0以上-10未満なら3、10以上-20未満なら4)対応するBの値をDに出力するにはどうすればいいか教えてください。  VLOOKUPを使えばできるようなことを読みましたがよく分かりません。できるだけ、詳しくお願いします。

  • ファイルの入出力

    氏名・身長・体重が入っているファイルからデータを構造体として読み取りその人の肥満度を表示するプログラムを作りたいのですが一考にわかりません。。。誰か知恵を貸してくれませんか 肥満度は20未満が「やせすぎ」20以上25未満は「普通」25以上は「肥満」としています。ファイルには27にんのデータが入っています。肥満度の計算は関数を作成で、関数名はbmiで引数は構造体、戻り値は実数です。肥満度の計算は体重÷身長÷身長です。 構造体は自分で定義します。よろしくお願いします

  • 急いでいます。エクセルの数式を教えてください。

    販売金額 A 1億5千万以上 B 1億以上1億5千万未満 C 5千万以上 1億円未満 D 5千万未満 報償率 Aグループ (1)達成率100%以上105%未満 1.8% (2)達成率105%以上110%未満 1.9% (3)達成率110%以上2.0% Bグループ (1)のとき 1.5% (2)のとき 1.6% (3)のとき1.7% Cグループ (1)のとき 1.2% (2)のとき 1.3% (3)のとき1.4% Dグループ (1)のとき 0.9% (2)のとき 1.0% (3)のとき1.1% 以上の条件で報償率を関数で表示させるにはどのような数式になるでしょうか? 販売金額がセルC8、達成率がD8、F8にグループ(AからD)が入力されています。 セルG8に報酬率を表示させたいです。 イフ関数やVlookupで考えてみましたが、うまく 数式ができません。 以上どうぞよろしくお願いいたします。

  • EXCELのIF文を短く記述するには…

    希望の動作にせっかくたどり着けましたが、長すぎて拒絶されます。 以下の関数を短く記述するにはどのようにすれば宜しいでしょうか? ご教示お願いします。 =IF(AND($C$13>0,$C$13<=12),ROUND(VLOOKUP($B$23,B5:Q23,MATCH($C$13,B5:Q5,0),FALSE)/$C$13,0),"" &IF(AND($C$13>12,$C$13<=24),ROUND(VLOOKUP($B$23,B25:Q32,MATCH($C$13,B25:Q25,0),FALSE)/$C$13,0),"" &IF(AND($C$13>24,$C$13<=36),ROUND(VLOOKUP($B$23,B45:Q52,MATCH($C$13,B45:Q45,0),FALSE)/$C$13,0),"" &IF(AND($C$13>36,$C$13<=48),ROUND(VLOOKUP($B$23,B54:Q61,MATCH($C$13,B54:Q54,0),FALSE)/$C$13,0),"" &IF(AND($C$13>48,$C$13<=60),ROUND(VLOOKUP($B$23,B63:Q70,MATCH($C$13,B63:Q63,0),FALSE)/$C$13,0),"" &IF(AND($C$13>60,$C$13<=72),ROUND(VLOOKUP($B$23,B72:Q79,MATCH($C$13,B72:Q72,0),FALSE)/$C$13,0),"" &IF(AND($C$13>72,$C$13<=84),ROUND(VLOOKUP($B$23, B85: Q92,MATCH($C$13,B85:Q85,0),FALSE)/$C$13,0),"" &IF(AND($C$13>84,$C$13<=96),ROUND(VLOOKUP($B$23, B94:Q101,MATCH($C$13,B94:Q94,0),FALSE)/$C$13,0),"" &IF(AND($C$13>96,$C$13<=108),ROUND(VLOOKUP($B$23,B103:Q110,MATCH($C$13,B103:Q103,0),FALSE)/$C$13,0),"" &IF(AND($C$13>108,$C$13<=120),ROUND(VLOOKUP($B$23,B112:Q119,MATCH($C$13,B112:Q112,0),FALSE)/$C$13,0),"" &IF(AND($C$13>120,$C$13<=132),ROUND(VLOOKUP($B$23,B125:Q132,MATCH($C$13,B125:Q125,0),FALSE)/$C$13,0),"" &IF(AND($C$13>132,$C$13<=144),ROUND(VLOOKUP($B$23,B134:Q141,MATCH($C$13,B134:Q134,0),FALSE)/$C$13,0),"" &IF(AND($C$13>144,$C$13<=156),ROUND(VLOOKUP($B$23,B143:Q150,MATCH($C$13,B143:Q143,0),FALSE)/$C$13,0),"" &IF(AND($C$13>156,$C$13<=168),ROUND(VLOOKUP($B$23,B152:Q159,MATCH($C$13,B152:Q152,0),FALSE)/$C$13,0),""))))))))))))))

  • Ifステートメントと条件式を用いた、マクロの記述方式について質問です。

    BMI値をもとに、Ifステートメントと条件式を用いて評価をするミクロを作成したいのですが・・・ (BMI値を算出、出力するマクロの記述まではできています) 判定した結果は、Range("B5")に文字列で表示するようにします。 [例]18.5未満の場合であれば「低体重 」となるようにしたいです。 ・BMI値 評価  (1)18.5未満 低体重  (2)18.5以上25未満 普通体重  (3)25以上30未満 肥満度1  (4)30以上35未満 肥満度2  (5)35以上40未満 肥満度3  (6)40以上 肥満度4 とりあえず、  If BMI値 < 18.5 Then 'BMI値が18.5未満の場合 として、その後、ActiveCell.・・・・以降の記述方法が分かりません。。。 1つ分かればあとは応用するだけなので、どなたか模範となる記述方法を示してもらえませんか? よろしくお願いします。

  • Excelの複数の条件にあった式を教えて下さい。

       A     B     C    D    E 1   4.7          16    8    3 2  5.8          0.0   3.0   6.0 3  4.5 4  2.16 5  3.55    ・    ・      ・    ・   Aの列には1日の平均気温が入力されています。(A31まで) B1に、「A1が16℃以上だったら0.0、8℃以上16℃未満だったら3.0、3℃以上8 ℃未満だったら6.0」と式を作り、B2から下の欄も、「  」内の条件でした いのですが、教えてもらえないでしょうか? 宜しくお願いします。 あらかじめ、C1~E1に16℃、8℃、3℃と言う意味で数字を入れています。 C2~E2にも、条件を満たしたら、この数字になりなさいという意味で数字を 入れています。 IF文を使ってB1に =IF(A1>C1,”0.0”,IF(D1≦A1>C1,”3.0”,IF(E1≦A1>D1,"6.0",""))) と式を入れたのですが、#NAMEとエラーが出てきます。

  • Excel INDIRECT

    お世話になります。 INDIRECT関数で、 =INDIRECT("A1")は、=A1と同じように、A1セルを参照しますが、 =VLOOKUP(A1,B1:C19,2,FALSE)を、==INDIRECT("VLOOKUP(A1,B1:C20,2,FALSE)”)で囲むと#REF!エラーになります。 目的は、A2セルにSheet2!B1:C20の範囲を示す文字列を入れて、=INDIRECT("VLOOKUP(A1,"&A2&",2,FALSE)”)としたいと思っています。 #REF!エラーの原因を教えていただけないでしょうか。 よろしくお願いします。

  • エクセルで範囲のある数値に該当するデータを抽出

    エクセルにて  0以上 5未満 A  5以上10未満 B 10以上22未満 C・・・ というように、条件となる数値に範囲があるデータを抽出したいです。 IF関数の場合ネスト制限があるため全てのデータ抽出が行えません。 VLOOKUP関数で条件となる数値に範囲がある場合でもデータ抽出可能なんでしょうか? 適切な言葉が分からないので、上手く説明出来ているか分かりませんが、どなたかいい方法ありましたら、教えてください。

  • 関数での標準報酬月額の求め方

    はじめまして。 検索し、同じような質問が過去にあったのですが、その回答の通りに式を入れても、どうしてもうまくいきません。 教えてください。 A列に下限額(以上)、B列に上限額(未満)、C列に標準報酬月額が入っています。 Sheet1 A     B    C 370,000 395,000 380,000 395,000 425,000 410,000 425,000 455,000 440,000  というような一覧表です。(上限・下限の差は均一ではなく、C列も中間値ではありません。39段まで続きます。) その一覧表から、式を作成し、 Sheet2 A B 396,000 410,000 202,300 220,000 150,100 150,000 で以下のようにA列に金額を入力した際に B列に標準報酬月額が表示されるよう、式をいれたいのです。 過去同じような質問(QNo.728270)より、 下限と、標準報酬月額のみの一覧表にし Sheet1 A     B     370,000 380,000 395,000 410,000 425,000 440,000  B列として、 Sheet2 A    B 396,000 =VLOOKUP(A1,Sheet1!$A$1:$B$4,2) 202,300 =VLOOKUP(A2,Sheet1!$A$1:$B$4,2) というように式を入れるというお答えをいただいているのを参考にさせていただいたのですが、 どうしても、その式を入れると「396,000」の標準報酬月額が「380,000」と表示されてしまいます。 正解は「410,000」なのです。 この解決策をわかる方がいらっしゃいましたら教えて下さい。m(__)m

  • エクセルのデータ抽出について

    基本的な内容かもしれませんが、どうしてもわからないので教えてください。   A B C D 1 1 b 3 c 2 2 t 4 y 3 3 r 3 o 4 4 l 5 p 5 5 k 3 w 上記のようなデータベースがあったとします。このシートと異なるシートのあるセルにたとえば3と入力すると   A B C D 1 1 b 3 c 2 3 r 3 o 3 5 k 3 w のようにC列が3である行が抽出され、なおかつA列の昇順で並ぶということをしたいのですが、vlookup等ではうまくできません。 フィルタを使用せずに実現したいのです。お願いします。