前往
大廳
主題

【教學】Excel函數:求餘數與四捨五入

愛天使亞夜 | 2021-03-17 19:30:48 | 巴幣 22 | 人氣 4088

各位好這裡亞夜。

Excel是一個很好用的工具。
一般情況下大家求求加總、求求平均等等的,
或者帶公式進去進行四則運算這點大家都不陌生,
但如果要你「求餘數」呢?

什麼叫求餘數?

舉例來說:19÷7=2…5,
這個範例中的5就是餘數。

我們假設19放在A1欄位,
然後7放在A2攔位好了,
然後A3欄位是商值而A4欄位是餘數。
那麼,
你A3、A4兩個欄位會怎麼輸入公式?

A3很簡單!
就寫=A1/A2唄!
沒錯,
這是一個方法,
不過你會發現它會變成這樣:
如果我們今天只要求除掉的部分商值,
而不要小數的部分該怎麼做?
或許你會說:那簡單,到儲存格格是那邊改成數字,然後小數點位數設0位唄!
然後你就會發現變成這樣:
顯然,
這並不是我們要的結果,
更何況這只是顯示上的結果,
實際上儲存格的數值仍然是2.714...
這將會導致你之後的運算出現問題。

正確的做法是,
我們既然只取到整數位,
那把小數點以後的就通通捨去就好啦!
為此我們就要使用到一個函數:ROUNDDOWN。

ROUND函數有三種:
ROUNDUP=無條件進位
ROUND=四捨五入
ROUNDDOWN=無條件捨去
這三個函數的引數都有兩個,
引數1是要計算的數值,
引數2則是取小數的有效位數。
1就是1位小數、2就是2位小數,
以此類推,
因此不要小數就是0。
而如果今天你是個位數也不要了,
只要保留十位數以上的場合當然就是填-1了。

在這裡,
我們當然要使用的是無條件捨去這功能。

因此A3正確該填的是:「=ROUNDDOWN(A1/A2,0)」
當中,
引數1中的A1/A2就是我們的商值,
然後我們只要取整數,
因此引數2只要填0就可以。

這樣我們的正解就求出來了。

那麼A4的餘數該怎麼求呢?
反應快的同學應該已經知道了,
就是=A1-A2*A3唄。
沒錯,
餘數就是被除數減去除數與商數的乘積後剩下來的值,
因此這麼做你確實會得到正確答案。
不過這裡敝人要介紹你一個更快的函數叫做:MOD。

MOD函數功能很簡單,
就是兩數相除後的餘數。
它有兩個引數,
引數1是被除數,
引數2是除數,
接著跳過求商直接求餘數,
因此A4欄位我們只要填入「=MOD(A1,A2)」就好了。

就是這麼簡單。


學會求餘數的功能有什麼用呢?
這就要看你在日常作業上會遇到怎麼樣的業務了。
以敝人的工作來說,
最典型的例子就是遇到「特休」。

我們都知道,
1天有8小時(工作日的天,不是日曆日的天)。
所以請假8小時=請假1天。
統計時,
我們習慣這樣統計:
這什麼意思呢?
整數的部份就是幾天這沒問題,
而小數的部分則是「小時」。
換句話說,
以這個範例來看,
實際請假日數是6天又3小時,
因為8小時=1天,
當中有兩個4小時就相當於請了1天嘛,
所以這很好算。
但問題來了,
如果你帶入Excel直接用SUM函數會怎樣?
會這樣:
哇,
你的員工感謝你,
他賺到了2個小時的有薪假呢!

為什麼會出現這個錯誤呢?
因為我們規定小數的部分是逢8進1,
你這些全部用加的,
人家系統仍然維持十進位,
你當然就算錯了啊。
那如果我們不想手算,
那有沒有什麼辦法處理這個問題呢?
有,
這就得用到我們剛剛說的求餘函數。

首先我們要把「小時」的部份給獨立拆出來。
這個做法很簡單,
你把它「除以1」的餘數就是小數了唄!
很好理解吧?
2.3÷1=多少?
=2…0.3嘛,
應該能看得懂吧?
因此MOD(2.3,1)=0.3,
像這樣就能把小數部份分離出來了。
因此我們需要一個欄位來分別記錄請假日數跟時數:


如此一來我們就把日數跟小時數拆開了,
然後兩邊加總就行:

唉不對啊,
你把兩邊拆開,
然後又加起來,
那到頭來結果不是沒變嗎?

如果你發現問題所在,
那很好。
因為我們還沒有對「小時數」的部份去做處理,
因此你直接去加總當然會得出錯誤結果。

我們這邊要做一個計算,
就是小時數這邊究竟能進位成幾天。
我們都知道,
0.1代表1小時,
因此8小時可以表示成0.8。
那8小時就是一天,
那要怎麼轉換呢?
很簡單唄,
除以0.8就好了,
因此呢,
「ROUNDDOWN(D10/0.8,0)」就會是我們進位成「天」的部分,
然後「MOD(D10,0.8)」就會是我們不足一天的「小時」的部分。
所以我們不能直接把「C10+D10」算出來,
而應該拆成「C10+ROUNDDOWN(D10/0.8,0)+MOD(D10,0.8)」這樣才對:
這樣我們就得到「6天3小時」的正確答案了。
覺得CD兩行的計算過程很礙眼?
你可以把儲存格隱藏起來呀!


以上只是一個簡單應用,
另一個比較少的應用,
是求「某個數字的某一個位數的數字」。
例如,
7654321這個數字的「千」位數是幾?
你寫出來就知道是4這沒問題,
但如果今天咱想要在試算表裡寫一套公式,
這樣不管我輸入任何數字,
儲存格裡都會自動算出「千位數」的數字出來,
有沒有辦法?
這裡當然就一樣是繼續用到我們的求餘跟捨去啦!

首先我們先看題目,
我們要求「千」位數的數字,
就代表「萬」以上的數字對我們來說都是多的對吧?
那要怎麼把「萬」以上的數字通通弄不見呢?
很簡單,
把它除以10000求餘數就好了唄!
因此第一步就是利用MOD函數,
寫入=MOD(7654321,10000)
這個數值會精確等於4321。

接著這會有一點小技巧。
我們要求的是「千」位數,
所以我們把它除以1000的話呢?
不就變成「個」位數了嗎?
咩有啜啦!
就是這樣,
然後在ROUNDDOWN掉小數點就好了。
所以答案就是:「=ROUNDDOWN(MOD(7654321,10000)/1000,0)」


如果函數裡面包函數你會亂掉,
可以參考上面的方式先把函數的結果放到其他儲存格裡,
接著再回傳該儲存格作為引數就可以了。

【後記】

以上就是MOD函數跟ROUND函數的用法,
希望你會喜歡。

封面圖片:《天秤のLa DEA。 ~戦女神MEMORIA~》ミルモ・メネシス
送禮物贊助創作者 !
0
留言

創作回應

相關創作

更多創作