IF邏輯新思維~

為了設定文件總覽表的自動編碼,
這次特別上網查詢關於excel IF函數的7層限制到底是否有解,
果然有了新發現~~!

熟悉excel IF 函數的人應該都知道, excel 的IF函數有所謂的7層限制,
簡而言之就是這樣的邏輯寫到第7次就不管用了:
=IF(logical_value,value_if_true,IF(logical_value,value_if_true,IF(…….
(這裡有圖示說明: http://tw.myblog.yahoo.com/lyuan-716/article?mid=87&sc=1)

這樣的IF寫法, 只能判斷7種狀況, 如果加上最後一個value_if_false, 頂多也只能判斷8個值,
那需判斷的資料大於8種時應該怎麼辦呢?
以前曾經試過再連結到另一個儲存格繼續試算, 但它實在不是個聰明的方法~
而這次的新發現就是, 原來在value_if_true的地方, 就可以以IF繼續開始,
這是我以前沒有的思維邏輯~也讓我的excel函數運用功力再上一層~~!

雖然講給老大聽的時候被虧了一下,
他說這是很基本的IF邏輯, 就是大的IF包true的IF跟false的IF,
不過老大也誇讚說, 看來我的邏輯觀念很清楚,
改天經他的調教後, 寫程式應該沒有問題~
不過等他有空應該不曉得是何年何月的事囉~~哈哈

這次參考了幾個網站, 還查了大陸網站, 所以小插曲是害老大的電腦中毒~
掃了14隻小蟲蟲出來~害我有點良心不安~老大歹勢啦^^”
所以在這裡只列出這個~
http://tw.myblog.yahoo.com/lyuan-716/article?mid=87&sc=1
(奇摩部落格也有毒的話~那它應該也撐不久了 哈哈)

附帶說明~大IF包true IF的部分~好像有人說只適用數字, 用文字沒效,
但我是用參照儲存格的方式, 再加上OR函數判斷, 所以寫出來的結果是OK的,
而且回家翻了我的excel密笈後,
發現原來在某些狀況下配合使用choose函數的話, 可以簡化IF函數的寫法~~
這部份待資料整理好後再放上來跟大家分享囉 ^^

3 thoughts on “IF邏輯新思維~

  • 2009年11 月20日 at 1:36 下午
    Permalink

    不好意思,可以請教一下嗎~
    因為最近在修改工作的班表,也遇到了IF上限七個層次的問題,因為小弟是新手,一直無法順利利用大大po的部落格的寫法,小弟駑鈍!可否請大大解說是哪裡出了問題呢!?
    原語法
    =IF(Roster!G4=”A”,”G380”,IF(Roster!G4=”B”,”O083”,IF(Roster!G4=”C”,”W090”,IF(Roster!G4=”TRN”,”TRN”,IF(Roster!G4=”TRN1”,”TRN1”,IF(Roster!G4=”TRN2”,”TRN2”,IF(Roster!G4=”TRN3”,”TRN3”,IF(Roster!G4=”N”,”H380”,IF(Roster!G4=”N1”,”H383a,IF(Roster!G4=”N2”,”H390”,IF(Roster!G4=”N3”,”I380”,IF(Roster!G4=”N4”,”I383”,IF(Roster!G4=”X”,”X”,IF(Roster!G4=”AL”,”AL”,IF(Roster!G4=”MET”,”MET”)))))))))))))))

    參照修改
    =IF(Roster!G4<=”H390″,IF(Roster!G4<=”TRN1”,IF(Roster!G4=”A”,”G380”,IF(Roster!G4=”B”,”O083”,IF(Roster!G4=”C”,”W090”,IF(Roster!G4=”TRN”,”TRN”,IF(Roster!G4=”TRN1”,”TRN1”))))),IF(Roster!G4=”TRN2”,”TRN2”,IF(Roster!G4=”TRN3”,”TRN3”,IF(Roster!G4=”N”,”H380”,IF(Roster!G4=”N1”,”H383a,IF(Roster!G4=”N2”,”H390”)))))),IF(Roster!G4<=”MET”,IF(Roster!G4<=”X”,IF(Roster!G4=”N3”,”I380”,IF(Roster!G4=”N4”,”I383”,IF(Roster!G4=”X”,”X”))),IF(Roster!G4=”AL”,”AL”,IF(Roster!G4=”MET”,”MET”)))

  • 2010年2 月22日 at 5:36 下午
    Permalink

    Dear Jerry:
    這陣子疏於照顧我的小猴園,這麼晚才回覆實在不好意思哦!
    初步看起來, 你的判斷式應該是”文字”格式, 所以需要加上or函數才能正確判斷,
    如果還需要協助的話歡迎提供檔案做進一步的討論哦!

  • 2010年2 月22日 at 6:14 下午
    Permalink

    Dear Jerry:
    剛花了點時間測試好囉~
    關鍵在於分組, 組數切割得適宜的話,基本上就解了一半的問題了,
    以下寫法供你參考:
    =IF(OR(Roster!G4=”A”,Roster!G4=”B”,Roster!G4=”C”),IF(Roster!G4=”A”,”G380″,IF(Roster!G4=”B”,”O083″,IF(Roster!G4=”C”,”W090″))),IF(OR(Roster!G4=”TRN”,Roster!G4=”TRN1″,Roster!G4=”TRN2″,Roster!G4=”TRN3″),IF(Roster!G4=”TRN”,”TRN”,IF(Roster!G4=”TRN1″,”TRN1″,IF(Roster!G4=”TRN2″,”TRN2″,IF(Roster!G4=”TRN3″,”TRN3″)))),IF(OR(Roster!G4=”N”,Roster!G4=”N1″,Roster!G4=”N2″,Roster!G4=”N3″,Roster!G4=”N4″),
    IF(Roster!G4=”N”,”H380″,IF(Roster!G4=”N1″,”H383a”,IF(Roster!G4=”N2″,”H390″,IF(Roster!G4=”N3″,”I380″,IF(Roster!G4=”N4″,”I383″))))),IF(OR(Roster!G4=”X”,Roster!G4=”AL”,Roster!G4=”MET”),IF(Roster!G4=”X”,”X”,IF(Roster!G4=”AL”,”AL”,IF(Roster!G4=”MET”,”MET”)))))))

    歡迎繼續交流哦!

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *