• 締切済み

データの評価について教えてください!!

エクセルで 血液検査の数値データを入力しそれについて 評価をつけるというフォーマットを作りたいと考えています 今のところ、IF文でやってみているのですが ひとつひとつ基準となる数値が違うため 20項目くらいについてそれぞれIF文を設定するのが大変です 例えば、白血球であれば ****************** 5.9以下  異常 6.0~6.4 要注意 6.5~8.0 正常 8.1~9.0 要注意 9.1以上  異常 ******************* という基準なので =IF(セル番地>=9000,"異常",IF(セル番地>=8600,"要注意", IF(セル番地>=3200,"正常",IF(セル番地>=2600,"要注意", IF(セル番地<=2500,"異常"))))) と設定しています 一応評価はきちんと出ているのですが 他のシートでは数値のセル番地が違っていたりして セル指定をやり直したりと面倒です また赤血球、脂質、などなど項目ごとに基準も違います VBAはまったくの素人でネットで検索してやってはみたものの、 IF文制御という方法で 数値を入力すると”正常”とか”異常”とか ポップアップが出るとこまでしかできませんでした これも白血球だけで普通のIF文より長文でより面倒でした・・・ 何か良い方法があれば教えていただきたいです よろしくお願いします

みんなの回答

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.7

こんにちは! お邪魔します。 解釈が違っていたらごめんなさい。 すべての基準は↓の画像の真ん中の表だという事で回答されてもらいます。 各項目毎の数値を真ん中の表の基準に合わせるために、 B列に入力した数値を右側の表の数値で割った数値を作業列のC列に表示させます。 それに基づいて、状態を表示するようにしてみました。 ↓の表で説明させていただくと・・・ C2セル =IF(B2="","",B2/INDEX($L$2:$L$9,MATCH(A2,$K$2:$K$9,0))) D2セル =IF(C2="","",INDEX($I$2:$I$6,MATCH(C2,$F$2:$F$6,1))) という数式を入れて、C2・D2セルを範囲指定してオートフィルで下へコピーしています。 以上、参考になれば幸いですが、 的外れの回答なら読み流してくださいね。m(__)m

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.6

データベースとしてSheet2のA1セルに白血球の文字が入りA2から下方にお示しの例では5.9 6.4 8.0 9.0 9.1とA6まで入力します。B列のB2セルからはそれに対応した評価を入力します。 同様にして、赤血球についてもC1セルに赤血球と入力して、C2セルから下方に数値を、また、D2セルから下方にはそれに対応した評価を入力します。 数値の行や評価の行は下方に何行でも構いません。 また、検査項目にそれぞれについては2列ずつに入力するようにします。 そこでSheet1に戻って、A列の1行目から白血球などの検査項目が入力され、C列には検査の数値が入力されるとします。そこでそれぞれのデータについての評価ですがD1セルに次の式を入力し、下方にオートフィルドラッグすればよいでしょう。 =IF(C1="","",IF(COUNTIF(Sheet2!$1:$1,A1)=0,"",IF(C1<=INDEX(Sheet2!$A:$AA,2,MATCH(A1,Sheet2!$1:$1,0)),INDEX(Sheet2!$A:$AA,2,MATCH(A1,Sheet2!$1:$1,0)+1),IF(C1>=INDEX(Sheet2!$A:$AA,COUNTA(INDEX(Sheet2!$A:$AA,1,MATCH(A1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AA,100,MATCH(A1,Sheet2!$1:$1,0))),MATCH(A1,Sheet2!$1:$1,0)),INDEX(Sheet2!$A:$AA,2,MATCH(A1,Sheet2!$1:$1,0)+1),IF(COUNTIF(INDEX(Sheet2!$A:$AA,1,MATCH(A1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AA,100,MATCH(A1,Sheet2!$1:$1,0)),C1)=1,INDEX(Sheet2!$A:$AA,MATCH(C1,INDEX(Sheet2!$A:$AA,1,MATCH(A1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AA,100,MATCH(A1,Sheet2!$1:$1,0)),1),MATCH(A1,Sheet2!$1:$1,0)+1),INDEX(Sheet2!$A:$AA,MATCH(C1,INDEX(Sheet2!$A:$AA,1,MATCH(A1,Sheet2!$1:$1,0)):INDEX(Sheet2!$A:$AA,100,MATCH(A1,Sheet2!$1:$1,0)),1)+1,MATCH(A1,Sheet2!$1:$1,0)+1))))))

回答No.5

#1です >一人について何項目もデータがあるのです >その場合もVLOOKUPは使えますか? 使えます。 単純に下へオートフィルの作業が使えないだけです 評価が同じでよいなら D2セル =IF(C2="","",INDEX($F$2:$F$6,MATCH(C2,INDEX($G$2:$I$6,,MATCH(A2,$G$1:$I$1,0))))) 下へオートフィル ただし、黄色の部分は重複をなくし、同じ値を使うこと (順番は関係ない)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

=LOOKUP(セル番地,{-9999,2600,3200,8600,9000},{"異常","要注意","正常","要注意","異常"}) 上記の式で -9999~2599:異常 2600~3199:要注意 3200~8599:正常 8600~8999:要注意 9000以上 :異常 になります。 {-9999,2600,3200,8600,9000}と{"異常","要注意","正常","要注意","異常"} をセル範囲での参照も可能です

  • mako_sea
  • ベストアンサー率47% (62/130)
回答No.3

こんにちは。 評価の分類数が多いほど、IFのネストが深くなり大変ですよね。 でも別にIFでなくてもいいのですよね? 評価用の基準値を記入したシートを1枚作成し、 その表からVLOOKUPでとりだす方法が 簡単でメンテもしやすいのでは、と思いました。 添付した画像は、式の「範囲」に名前の定義を使用しています。 シート2(評価基準シート)のA1:B7に「白血球」、 D1:E7は「赤血球男」と名前をつけて式を簡略化しました。 ご参考になれば幸いです。

  • Sinogi
  • ベストアンサー率27% (72/260)
回答No.2

>他のシートでは数値のセル番地が違っていたりして データがシート1ではA列にあり、シート2ではC列にあるのでしょうか その場合シート1の評価がE列なら、シート2ではF列にすれば評価式をCopy&Pasteすればすむ筈です。 データと評価の相対位置を一定にしましょう。 >また赤血球、脂質、などなど項目ごとに基準も違います 評価基準シートを設け、絶対参照($A$1 など)とすればよいでしょう。 =IF(セル番地>='基準値'!$A$1,"異常",IF(セル番地>='基準値'!$A$2,"要注意",・・・ ところで提示されている評価式と基準値が異なるのはコピーミスとしても、 >=IF(セル番地>=9000,"異常",IF(セル番地>=8600,"要注意", IF(セル番地>=3200,"正常",IF(セル番地>=2600,"要注意", IF(セル番地<=2500,"異常"))))) これの最後のIf式は<=2500となっており、直前のセル番地>=2600との評価結果から 2501~2599はFalseが表示されます。 直前までと同じ符号にするほうがわかりやすい式になるでしょう

Smn0sd
質問者

お礼

回答ありがとうございます 数値ぜんぜん違いました。申し訳ありません 正しくは ************** 2.5以下  異常 2.6~3.1 要注意 3.2~8.5 正常 8.6~8.9 要注意 9.0以上  異常 ******************* です式は1000倍してあります 今作っている表を貼り付けてみたのですが この表の各項目について評価基準についての評価式を 別シートに作るということでしょうか? 理解が悪くて申し訳ありません >これの最後のIf式は<=2500となっており、直前のセル番地>=2600との評価結果から 2501~2599はFalseが表示されます。 ということは >=IF(セル番地>=9000,"異常",IF(セル番地>=8600,"要注意", IF(セル番地>=3200,"正常",IF(セル番地>=2600,"要注意","異常")))) とすればよいでしょうか?

回答No.1

[Ctrl]+[F3]名前の定義 名前 白血球表 参照範囲 =$E$2:$F$6 C2セルに =IF(A2="","",LOOKUP(B2,白血球表)) または =IF(A2="","",VLOOKUP(B2,白血球表,2)) 下へオートフィル

Smn0sd
質問者

お礼

回答ありがとうございます 書き方が悪くてすみません 一つの項目について何人ものデータがあるわけではなく 一人について何項目もデータがあるのです その場合もVLOOKUPは使えますか?

関連するQ&A

  • 文字の種類によって、数値をカウントしたいのですが、

    エクセル オフィスXPです。 1:あるセルに”○”と入力したら、あるセル(B1)に”1”をカウントし、 2:あるセル(1とは別のセル)に”×”と入力したら、あるセル(B1)に”-1”をカウントし、 3:あるセル(1,2とは別のセル)に”△”と入力したら、あるセル(B1)に”0.5”をカウントするようにしたいのですが、 そういったIF文の作り方がわかりません。 こうやって、違うセルに、"○"、”×”、”△”を入力し、数値を足したり引いたりして、 合計の数値を出したいと考えています。 多分IF文ではないかと思うのですが、どういったものを作ればいいのか わからず、(キーワードなどもわからず検索しようにもわからない状態) 教えていただきたく、お願い申し上げます。 宜しくお願いします。

  • エクセル2021 高評価の自動表示

    高評価の自動表示 BN12、BP12、BR12、BT12、BV12のセルにはそれぞれ下記の関数を入力しおり、指定した文字列(評価)の合計数字が表示されます。 BN12セル =COUNTIF(BW12:EH12,”×”) BP12セル =COUNTIF(BW12:EH12,”△”) BR12セル =COUNTIF(BW12:EH12,”〇”) BT12セル =COUNTIF(BW12:EH12,”◎”) BV12セル =COUNTIF(BW12:EH12,”☆”) 上記の設定で、下記のように合計数値が一番高い文字列(評価)をBH12セルにしたいです。 1・合計数値が一番高い文字列(評価)をBH12セルに表示する。 例:BP12セルの数値が一番高いときはBH12セルに △ の文字列(評価)が表示される。 2・一番高い文字列が複数(同一数値の文字列)ある時には評価の高い文字列を表示する。 *評価の高い順(左が高い)=☆◎〇△× 例:BN12セル=3 BP12セル=5 BR12セル=5 BT12セル=5 BV12セル=0 の数値が表示された場合、BH12セルには ◎ の文字列が表示される。 3・BN12、BP12、BR12、BT12、BV12のセルすべて数値の表示なし(数値=0)の時にはなにも表示しない。  何卒ご教授願よろしくおい願いいたします。 ※OKWAVEより補足:「富士通FMV」についての質問です。

  • 3週間微熱下痢続いてます

    初めて利用します。 三週間昼から夕方にかけて微熱があり、下痢、痰が続いています。昨日、かかりつけの内科で血液検査をしてもらい、今日、結果を聞きに行ったところ、LDH301(119~245正常)カリウム5.1(3.3~4.8正常)白血球115(35~91正常)赤血球541(379~500正常)でした。CRPは正常でした。ほかの検査項目も正常でした。が、白血球の数値が高いと言うことで、血液内科で検査してもらった方がいいと言われました。ここ三年ほど一年おきに血液検査をしているのですが、いつも白血球と赤血球の数値が高かったです。でも、特に注意されることもなくいまにいたっています。なにか関係があるんですかね?いちよ、血液内科に受診しますが、それまでになにかわかればと思い投稿しました。 何かわかる方、教えてください。おねがいします。

  • accessVBAでの入力データのチェック方法

    AccessVBAで、 テキストBOXの入力したときチェックをしたいのですが 例えばBOX名を金額として、この項目にテーブルの項目(整数型、規定値:0、入力規則 >0 興要求 はい)を設定して Private Sub 金額_Exit(Cancel As Integer) If 金額 = 0 Then if 金額 = null then if 金額 is null then で 空打ち(数値なしでEnterキーを押下)したとき上記IF文が反応しません フォームを編集モードで開いて入力するとき、レコードの終わりを過と追加モードに切り替わりますが、追加モードのとき項目に初期値を設定するため編集モードチェック出来ますか

  • 関数 

    Excel関数で、二つのセルにある項目の数値を入力したら、他の一定のセルに+なら、+数値、 -なら、-数値というように、関数を設定することはできますか。 例えばA2のセルに100と入力されていて、B2のセルに150とすると、他のセルに、+50というように入力ができるようにしたいです。 お願いします。

  • エクセルデータのハイフンだけ印刷されない

    エクセル2000で、住所データを入力し印刷したところ、 「丁目-番地-号」の間のハイフンだけ印刷されず困っています。 全角半角の変更と、セルの書式「標準」「文字列」の2つを試しましたが どちらも印刷されませんでした。 他に何か設定項目があるのでしょうか...? どなたか教えて下さい。よろしくお願い致します。

  • Excelで他のセルのデータをとってくるときに

    Excelで他のセルのデータをとってくるとき =F10 とかやりますよね、でもとってくる先に なにも入力されていないとき 上記のようにやると、セル上に「0」と表示されてしまうのです。 今は、if文をつかって空なら""をいれるみたいな式をいれているのですが、if文を使わないで0がでないようにってできるのでしょうか?

  • Excelでのグラフ作成、データ範囲の設定について

    お世話になります。 Excel2003でのグラフ作成について、ご教示いただけたらと思います。 A列に日付、となりのB列に数値を入力していく形式で、 そのデータをグラフに反映させます。 毎日毎日、AB両列にデータが入力されていきますので、 グラフの「元のデータ」を、あらかじめ広く取ると Y軸に日にちが移動してしまい (しかもとんでもない日付に変わってしまいます。 おそらく、なんらかの数値がシリアル値となり、 日付表示されています)、グラフ全体がまったく変な物になってしまいます。 たとえば、「元のデータ」の「データ範囲」を、 数値が入力されているセルだけに設定すると、 Xに日付、Yに項目数値が来る正常なグラフになるのですが、 「データ範囲」に、無入力の行を含めると異常をきたす…といった感じです。 以前、これと同じような表とグラフを作成したときは、 あらかじめデータ範囲を広く取っておくことで、 グラフの右側に空白ができてしまうものの、 次々と最下部のデータの直下セルに入力していくと グラフにもリアルタイムで反映されるので便利だなぁ、と感じたことがありました。 なぜ、今回はうまくいかないのか、色々と試行錯誤してみましたが、 皆様のお知恵を拝借させていただくことに致しました。 稚拙な文章でお恥ずかしい限りですが、 どうぞよろしくお願いいたします。

  • MOS エクセルエキスパート採点基準について

    「VLOOKUP」についてですが、「検索の型」の部分は「0」または「1」を入力すれば正解になるのでしょうか?それとも「True」または「False」を入力しないと正解にならないのでしょうか?データベース関数に関しても「フィールド」を数値ORセル番地どちらを入力すれば正解になるのかもわかりません。採点基準は公開されていないと思いますが、過去受験をされた方はどちらを使ったのでしょうか?

  • EXCEL IF文の使い方で

    1~12月までの数値が入った横並びのセルがあります。 それと月度を入力したセルがあります。 そして、特定のセルに、指定した月度の数値を持ってくる式を入れたいのですが、単純にIF文のネストではだめですよね。何か良い関数はありますでしょうか? EXCEL2003です

専門家に質問してみよう