iT邦幫忙

0

求救~excel計算平均後,小數點進位,但加總後不能超過原本總額。

  • 分享至 

  • xImage

https://ithelp.ithome.com.tw/upload/images/20250221/20171722wRMWW55MQQ.png

求救各位excel大神
D欄計算出各區分坪數所需繳納之公共電費後,四捨五入進位,然而這樣總是就會超過C欄的總電費,就是會多1元,
如何透過函數讓數據呈現如E欄,加總起來不超過C欄總電費
感謝各位大神協助
謝謝

請使用持份比例計算就好,不要平方公尺 * 0.3025 * 持分 來計算怎麼分攤
因為小數位數越多,你四捨五入之後的尾差越大
六位的尾差,你四捨五入怎麼都分不均啦
持份比例權狀就寫好了幾分之幾
這各持分分數 直接乘以電費金額,不就是該分攤的金額了
圖片
  熱門推薦
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
rc0603
iT邦研究生 2 級 ‧ 2025-02-21 17:42:14

這個問題是看要把差異數調整給哪一欄,例如調整到最後一欄
三欄算出
E1=347
E2=338
E3=(1358-347-338)=672

2
ccenjor
iT邦大師 8 級 ‧ 2025-02-21 19:40:08

我是以如果總和多1時,取最小的那個值減1。
E1:
=IF((SUM($D$2:$D$4)>$C$2)*(D2=SMALL($D$2:$D$4,1)),D2-1,D2)
向下複製到E2:E3。
https://ithelp.ithome.com.tw/upload/images/20250221/20109881aHZoAtdxal.jpg

淺水員 iT邦大師 6 級 ‧ 2025-02-22 01:42:13 檢舉

請問為什麼是調整最小的數字而不是最大的數字?
我的想法是調整最大的數字影響應該比較小

以前當學生在畫圓餅圖時
好像也是調整最大的項目讓總和變成100%

ccenjor iT邦大師 8 級 ‧ 2025-02-22 13:55:15 檢舉

謝謝!這要看作者想法,其實要最大或最小或指定第幾大第幾小都可以,我這只是說明我的解法。

0
ming9900
iT邦新手 3 級 ‧ 2025-02-23 14:39:11

以下是問deepseek 的回答,我沒有印證,原post可以試試看.

以下為解決公共電費分攤四捨五入後總和溢價的完整方案:


問題核心

當直接對各分區電費(D欄)四捨五入到整數(E欄)時,總和可能因進位多出1元。需動態調整使 SUM(E欄) = C欄總電費


解決思路

  1. 初步四捨五入
    先計算所有分區的基礎四捨五入值。
  2. 識別溢價差異
    檢查總和是否超出總電費(通常多1元)。
  3. 動態修正溢價
    若溢價存在,找到「四捨五入時小數部分最接近0.5」的項目,將其減1元。

具體步驟與公式

步驟1:計算基礎分攤金額(D欄)

假設:

  • 總坪數在 A2
  • 分區坪數在 B2:B100
  • 總電費在 C2

每戶分攤金額公式:

D2 = (B2 / $A$2) * $C$2

下拉填充至所有分區。


步驟2:四捨五入並動態修正(E欄)

使用組合公式直接輸出修正後的結果:

=ROUND(D2, 0) - IFERROR(
   (SUMPRODUCT(ROUND(D$2:D$100, 0)) > $C$2) *
   (D2 - TRUNC(D2) = MAX(IF(ROUND(D$2:D$100, 0) - D$2:D$100 = 0.5, D$2:D$100 - TRUNC(D$2:D$100)))) *
   1,
   0
)

公式說明:

  1. ROUND(D2, 0)
    先對D欄四捨五入。
  2. SUMPRODUCT(ROUND(D$2:D$100, 0)) > $C$2
    檢查四捨五入後總和是否超過總電費。
  3. MAX(IF(ROUND(D$2:D$100, 0) - D$2:D$100 = 0.5, ...))
    找到因四捨五入進位1元的項目(小數部分恰為0.5)。
  4. 對該項目減1元,消除溢價。

操作示意

A欄(總坪數) B欄(分區坪數) C欄(總電費) D欄(分攤金額) E欄(修正後結果)
1000 200 5000 1000 1000
1000 300 5000 1500 1500
1000 500 5000 2500 2499

說明:

  • 原始四捨五入總和:1000 + 1500 + 2500 = 5000(無需修正)。
  • 若D欄為 2500.5,四捨五入後總和變為 5001,則將最後一筆修正為 2499

進階驗證

  1. 精確度測試
    將公式複製到所有分區後,檢查 SUM(E欄) 是否嚴格等於 C欄
  2. 極端值處理
    若多個分攤金額的小數均為0.5,公式會自動選擇最後一個出現的項目進行修正(可調整 MAXLARGE 控制優先級)。

替代方案(輔助列法)

若需更直觀的操作,可新增輔助列標記修正項:

  1. F欄(標記溢價修正項)
    =IF(SUMPRODUCT(ROUND(D$2:D$100, 0)) > $C$2, 
       IF(D2 - TRUNC(D2) = MAX(IF(ROUND(D$2:D$100, 0) - D$2:D$100 = 0.5, D$2:D$100 - TRUNC(D$2:D$100)), 
       1, 0), 
       0
    )
    
  2. E欄(最終結果)
    =ROUND(D2, 0) - F2
    

透過上述方法,可確保四捨五入後的總和嚴格等於公共電費總額,避免人工手動調整。

0

我之前的做法不太一樣。
一般小計的部份,我還是會保留原值及四捨五入值

在總計時,會個別統計
1.「小計原值加總」後四捨五入
2.「小計原值四捨五入值」

然後比對兩值是否相等。
差異為多則扣除最大小計值。
差異為小則增加最小小計值

但在計算還是有爭議的情況下。(我就不說是哪個行業,懂的人就懂)
則後來是小計還是會保留小數點2~4位數的顯示。不直接整數化。

認真來說,原本四捨五入的做法,就只能做到最後統計才去處理。
如果個別先四捨五入再做加總處理。

一定會有出入的。如果小計區間多的話。
有時誤差10元以上的情況,也是會發生的。

這就看待帳務人員該如何去整理這樣的帳務了。該如何去處理

我要發表回答

立即登入回答