Re: [算表] 體適能數據分級之判斷--代替if,多層次對應

看板Office作者 (David)時間17年前 (2009/02/26 04:14), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串2/2 (看更多)
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)
文章代碼(AID): #19fQQp7d (Office)
文章代碼(AID): #19fQQp7d (Office)