Re: [算表] 體適能數據分級之判斷--代替if,多層次對應
XD 沒想到您這麼快就完成了
因為您給的式子需判別的數字很多
我甚至是用"資料剖析"來把公式轉成對照表 XD
A B C D E F G
1 6 0 14.57 15.42 16.39 17.8
11 0 16.07 17.56 19.64 22.38
16 0 18.23 19.72 21.51 24.49
21 0 20.12 21.67 23.01 25.02
26 0 20.91 22.33 23.87 26.02
31 0 21.15 23.03 24.7 26.34
36 0 22.05 23.57 24.91 26.48
41 0 22.14 23.73 25.06 26.56
46 0 22.27 23.86 25.19 26.67
51 0 22.34 24.09 25.34 26.98
56 0 22.41 24.13 25.46 27.07
61 0 22.47 24.24 25.58 27.34
因為MATCH需要有下限
所以加了一欄0
在 =IF(B13=1, 這裡的內容 ,"") 可改寫
至於B13看起來只有1與非1的差別
所以維持IF不錯~
=IF(B13=1,MATCH(I13-0.001,INDEX($C$1:$G$12,MATCH(F13,$B$1:$B$12,),)),"")
至於為什麼要減0.001
因為MATCH的等號是放在大於那一邊
即≧14.57 放第二組
所以只好減一個小的數改變組別~
http://2y.drivehq.com/p/MultiMatch.xls
當然,數字寫在外面是好的方法,但若要比較兩式的差別
還是要放回去看一下 (選住範圍 如$C$1:$G$12 按f9)
自然也是不適合人眼閱讀的樣子
=IF(B13=1,MATCH(I13-0.001,INDEX(
{0,14.57,15.42,16.39,17.8;0,16.07,17.56,19.64,22.38;0,18.23,19.72,21.51,24.49;
0,20.12,21.67,23.01,25.02;0,20.91,22.33,23.87,26.02;0,21.15,23.03,24.7,26.34;
0,22.05,23.57,24.91,26.48;0,22.14,23.73,25.06,26.56;0,22.27,23.86,25.19,26.67;
0,22.34,24.09,25.34,26.98;0,22.41,24.13,25.46,27.07;0,22.47,24.24,25.58,27.34}
,MATCH(F13,{6;11;16;21;26;31;36;41;46;51;56;61},),)),"")
※ 引述《brianstw (^^)》之銘言:
: 標題: [算表] 體適能數據分級之判斷
: 時間: Wed Feb 25 18:55:23 2009
:
: 軟體: MS Excel
:
: 版本: 2003
:
: 最近有一個七千多筆的體適能檢測數據
:
: 不過由於都是數據 所以需要江每一個檢測項目轉換成評估等級
:
: 比如說BMI : 過輕 稍輕 適當 稍重 過重
:
: 且必須搭配年齡層以及性別
:
: 目前作法我把年齡5歲分成一堆:6-10為6歲.11-15為11歲.16-20為16歲.21-25為21 等等
:
: 當然 在年齡分層部份 大量使用到if 結果當然也遇到了傳說中if七層限制
:
: 最後搭配了&&以及一些技巧完成
:
: 想問一下各位 由於我現在要針對BMI數據分級 想問一下
:
: 是不是有推薦的方法呢
:
: 不然一堆if 好想哭
:
: 補上年齡分層最基本方法 一一"
:
: =IF(E2<11,6,IF(E2<16,10,IF(E2<21,16,IF(E2<26,21,IF(E2<31,26,
: IF(E2<36,31,IF(E2<41,36,IF(E2<46,41,""))))))))&IF(E2>45,IF(E2<51,46,
: IF(E2<56,51,IF(E2<61,56,61))),"")
:
: 現在我所使用的BMI的方法如下
:
: =IF(B13=1,
: IF(F13=6,IF(I13<=14.57,1,IF(I13<=15.42,2,IF(I13<=16.39,3,IF(I13<=17.8,4,5)))),
: IF(F13=11,IF(I13<=16.07,1,IF(I13<=17.56,2,IF(I13<=19.64,3,IF(I13<=22.38,4,5)))),
: IF(F13=16,IF(I13<=18.23,1,IF(I13<=19.72,2,IF(I13<=21.51,3,IF(I13<=24.49,4,5)))),
: IF(F13=21,IF(I13<=20.12,1,IF(I13<=21.67,2,IF(I13<=23.01,3,IF(I13<=25.02,4,5)))),
: IF(F13=26,IF(I13<=20.91,1,IF(I13<=22.33,2,IF(I13<=23.87,3,IF(I13<=26.02,4,5)))),
: IF(F13=31,IF(I13<=21.15,1,IF(I13<=23.03,2,IF(I13<=24.70,3,IF(I13<=26.34,4,5)))),
: IF(F13=36,IF(I13<=22.05,1,IF(I13<=23.57,2,IF(I13<=24.91,3,IF(I13<=26.48,4,5)))),
: IF(F13=41,IF(I13<=22.14,1,IF(I13<=23.73,2,IF(I13<=25.06,3,IF(I13<=26.56,4,5)))),
: IF(F13=46,IF(I13<=22.27,1,IF(I13<=23.86,2,IF(I13<=25.19,3,IF(I13<=26.67,4,5)))),
: IF(F13=51,IF(I13<=22.34,1,IF(I13<=24.09,2,IF(I13<=25.34,3,IF(I13<=26.98,4,5)))),
: IF(F13=56,IF(I13<=22.41,1,IF(I13<=24.13,2,IF(I13<=25.46,3,IF(I13<=27.07,4,5)))),
: IF(F13=61,IF(I13<=22.47,1,IF(I13<=24.24,2,IF(I13<=25.58,3,IF(I13<=27.34,4,5)))),
: "")))))))))))),"")
:
: 有沒有先進可以提供更好的方法呢
:
: 謝謝你
: --
: ※ 發信站: 批踢踢實業坊(ptt.cc)
: ◆ From: 140.127.22.28
: ※ 編輯: brianstw 來自: 140.127.22.28 (02/25 18:55)
: ※ 編輯: brianstw 來自: 140.127.22.28 (02/25 19:00)
: ※ brianstw:轉錄至看板 ask 02/25 19:08
: 推 JieJuen:/代替if 02/25 20:52
: → JieJuen:/分類 /對應 /查表 02/25 22:42
:
: 感謝J大
:
: 不過我還是不太會用VLOOKUP
: 最後我使用VBA完成
:
: 搭配記事本 EXCEL匯入外部資料 最後算是花一小段時間完成了
: 謝謝
:
: 若有興趣之版友
: 可以來信索取所計算之VBA
:
: 謝謝
: ※ 編輯: brianstw 來自: 220.142.174.85 (02/26 00:40)
: 推 JieJuen:哈 不賴喔~ vba中用較少if 改用 case?要不貼上來看能不能 02/26 03:26
: → JieJuen:"翻譯"成公式 哈哈 或是因為vba而解除了巢狀公式限制? 02/26 03:29
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.164.49.140
推
02/26 13:00, , 1F
02/26 13:00, 1F
→
02/27 00:19, , 2F
02/27 00:19, 2F
※ 編輯: JieJuen 來自: 218.164.49.72 (05/11 19:33)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
Office 近期熱門文章
PTT數位生活區 即時熱門文章