網路城邦
上一篇 回創作列表 下一篇   字體:
撰寫 Excel 的自定函數
2010/01/08 13:11:10瀏覽9581|回應3|推薦12

前幾天,收到一個使用需求,原本要以開發一個網站去處理,但最後決定由修改使用者原有的 Excel 檔來處理之。其條件如下:

條件一:提供之 Excel 欄位資料型態不可變更,且在原有範圍內不得增加欄位。
條件二:前兩個因子判斷條件:二個數據均超過上下限時不修正,其一為OK時,顯示值為上限或下限。
條件三:第三個因子判斷條件:二個數據平均超過上下限時,顯示值為上限或下限。
條件四:第四個因子判斷條件:二個數據均超過下限時不修正,其一為OK時,顯示值為下限。
條件五:當判斷出來之數值為 NG 時,必須彈出警告小視窗。
條件六:當判斷出來之數值為 NG 時,其值必須顯示為紅色字體。

光看以上條件,似乎沒什麼太大的問題。但實際問了相關資訊後,其判斷條件算是有一點點複雜。以前兩個判斷因子來看,每個判斷條件中,各有兩個輸入值及兩個標準值。所以,至少會有底下的狀況發生:

狀況一:兩個值均小於下限,判定為NG,使用警告及文字變色。
狀況二:兩個值均大於上限,判定為NG,使用警告及文字變色。
狀況三:第一個值低於下限,第二個值落於範圍中,顯示下限。
狀況四:第一個值落於範圍中,第二個值低於下限,顯示下限。
狀況五:第一個值高於上限,第二個值落於範圍中,顯示上限。
狀況六:第一個值落於範圍中,第二個值高於上限,顯示上限。
狀況七:兩個值的範圍均大於上下限範圍。

使用者告知此狀況七不會發生,故不考慮。所以,至少有六個狀況可能發生。若以 Excel 的內建函數來做,原則上是可以做到判斷式的部份,但似乎沒辦法彈出警告視窗,所以只好考慮使用 VBA。

由於我沒在 Excel 中使用過 VBA,只得求助一位老友的協助。一開始他也謙虛的說他已經五年沒寫過程式了,所以得花一些時間回想,但總比我已經九年沒碰程式的狀況還好太多了吧!而且,我還不知道如何在 Excel 中使用自定函數呢!

隔日上班前,信箱中躺著他寄來的範例。一打開來看,果然幫了我太多的忙。雖然範例中的狀況不符合我的需求,但我卻可以依我自己的實際狀況,來進行自定函數的撰寫。

好友寫的範例檔:(傳入兩個變數及傳出一個變數,NG的數字改負值

 

經過我修改後的檔:(傳入四個變數及傳出一個變數,NG的數字彈出警告視窗及使用Excel 中的設定格式化的條件將文字變色

 
 
 
 

當然,我也知道這種寫法並不是最佳的寫法,尤其是演算法的部份。若各位看倌有更好的演算法要提供的話,我也非常的歡迎與感謝。至此,終於可以接下去撰寫另外三組要判斷狀況的自定函數。

人生,不就是由一連串的選擇所組合而成。
故事,通常可以從微小的細節中受到感動。

我是「高級水電工」,也是華語導遊/華語領隊,
就讓我們一起共同體驗人生、體驗感動。

聯絡方式:https://www.facebook.com/tours4sweethome
加入好友

【版權宣告】 版權屬瑞奇所有,歡迎非商業用途轉載,並請於轉載文章之中註明原始出處,否則即視為侵權行為!


free counters
( 興趣嗜好電腦3C )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=rickyshiu&aid=3666939

 回應文章

kathy.
等級:6
留言加入好友
捏~捏~ 請問一下高級水電工
2010/01/08 14:28
罰抄十遍的部份用"另存圖片"和"貼上"功能來作,算不算違法? 

                                                "糟糕級"被電工  啟
瑞奇(rickyshiu) 於 2010-01-08 14:56 回覆:

ㄟ.....那我只能說......

我輸了~~~


阿菊
等級:8
留言加入好友
看沒有啦!
2010/01/08 13:52
完全看沒有啦!

溫度在變化,你的心,也在變化嗎?
瑞奇(rickyshiu) 於 2010-01-08 14:04 回覆:

罰抄十次.....

再不會的話, 再抄十次, 抄到會為止.


kathy.
等級:6
留言加入好友
ㄝ....
2010/01/08 13:29

本看倌對於這個函數,也許會有更好的想法...。

但可能要十年之後,才能告訴你。(前八年研究如何看懂這個問題,後二年再想個更好的修改方法)

瑞奇(rickyshiu) 於 2010-01-08 13:48 回覆:

呵~~~看到第一段, 讓我小開心了一下......

沒想到結果是......要我等十年........