大家好,今天和大家分享「4舍6入5不變」,這是一個群友的提問,也許我的描述不對,但題意是這個意思,如輸入4.5,返回4.5;輸入4.4就返回4;4.6就返回5。
具體效果大家看一下動畫
看完動畫之後,大家想學這個嗎?想學的跟我一起來
公式
=IF(A1="","",INT(A1)+LOOKUP(ROUND(MOD(A1,1),1),{0,0.5,0.6},{0,0.5,1}))
公式解釋
=MOD(A1,1)這個函數作用返回兩數相除的餘數,第2參數用1,就是提取小數部分,很經典,大家下次誰問你不要整部分,你馬上想到它mod
由於excel本身存在一個浮點問題,相信許多會計朋友,由於對帳差1分錢,老闆也不給發工資的事常有,所以為了保險還要在Mod函數前面嵌套一個round函數,你如果不信,你可以測試這個公式=INT(A1)+LOOKUP(MOD(4.6,1),{0,0.5,0.6},{0,0.5,1})返回4.5,我們期望它返回5,這就是浮點問題引起的。我記得有一個學員「真誠待人"在學習vba過程,判斷單元格是否相等也糾結這個問題了,公式為=Round(MOD(A1,1),1)精確到小數位第1位。而公式=INT(A1)+LOOKUP(ROUND(MOD(4.6,1),1),{0,0.5,0.6},{0,0.5,1})返回了5
=int(A1)取整,把它整數部分留下
公式=LOOKUP(ROUND(MOD(4.6,1),1),{0,0.5,0.6},{0,0.5,1})第1參數查找值,第2參數{0,0.5,0.6}
第3參數{0,0.5,1},什麼意思呢,由於第2參數我們用了升序排序,所以根據lookup函數「二分法「原理,首找找和它相等的,找不到相等的找比它小的,而比它小的有許多,從小的裡面找一個最大的
如查找值是0.7,第2參數沒有0.7,找比它小的有0.6,0.5,0,小的裡面0.6最大,0.6在第2參數第3個位置 ,返回對應第3參數第3個位置的值1
if公式在此是起一個屏幕0的作用if(A1="","",公式)如果A1="",那麼顯示空,否則就顯示公式。
最後公式為
=IF(A1="","",INT(A1)+LOOKUP(ROUND(MOD(A1,1),1),{0,0.5,0.6},{0,0.5,1}))
好了,今天晚上我們就聊到這裡,謝謝大家收看
備註:11月26日vba初級班開新班,想學的,加我微信18664243619諮詢詳情
佛山小老鼠錄製、包含函數數組、多層嵌套、加權、降維等函數高級知識的講解,
佛山小老鼠錄製、包括基礎技巧、函數、透視表,VBA。想要的加微信18664243619諮詢
我們在線網絡開設的班級
函數初級、中級班、高級班;VBA初級、VBA中級、VBA高級班;數據透視表班
諮詢電話:18664243619;聯繫人:曹明武
報名微信諮詢:加微信號18664243619