這個問題是看要把差異數調整給哪一欄,例如調整到最後一欄
三欄算出
E1=347
E2=338
E3=(1358-347-338)=672
我是以如果總和多1時,取最小的那個值減1。
E1:
=IF((SUM($D$2:$D$4)>$C$2)*(D2=SMALL($D$2:$D$4,1)),D2-1,D2)
向下複製到E2:E3。
以下是問deepseek 的回答,我沒有印證,原post可以試試看.
以下為解決公共電費分攤四捨五入後總和溢價的完整方案:
當直接對各分區電費(D欄)四捨五入到整數(E欄)時,總和可能因進位多出1元。需動態調整使 SUM(E欄) = C欄總電費
。
假設:
A2
B2:B100
C2
每戶分攤金額公式:
D2 = (B2 / $A$2) * $C$2
下拉填充至所有分區。
使用組合公式直接輸出修正後的結果:
=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
)
公式說明:
ROUND(D2, 0)
SUMPRODUCT(ROUND(D$2:D$100, 0)) > $C$2
MAX(IF(ROUND(D$2:D$100, 0) - D$2:D$100 = 0.5, ...))
A欄(總坪數) | B欄(分區坪數) | C欄(總電費) | D欄(分攤金額) | E欄(修正後結果) |
---|---|---|---|---|
1000 | 200 | 5000 | 1000 | 1000 |
1000 | 300 | 5000 | 1500 | 1500 |
1000 | 500 | 5000 | 2500 | 2499 |
說明:
1000 + 1500 + 2500 = 5000
(無需修正)。2500.5
,四捨五入後總和變為 5001
,則將最後一筆修正為 2499
。SUM(E欄)
是否嚴格等於 C欄
。MAX
為 LARGE
控制優先級)。若需更直觀的操作,可新增輔助列標記修正項:
=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
)
=ROUND(D2, 0) - F2
透過上述方法,可確保四捨五入後的總和嚴格等於公共電費總額,避免人工手動調整。
我之前的做法不太一樣。
一般小計的部份,我還是會保留原值及四捨五入值
在總計時,會個別統計
1.「小計原值加總」後四捨五入
2.「小計原值四捨五入值」
然後比對兩值是否相等。
差異為多則扣除最大小計值。
差異為小則增加最小小計值
但在計算還是有爭議的情況下。(我就不說是哪個行業,懂的人就懂)
則後來是小計還是會保留小數點2~4位數的顯示。不直接整數化。
認真來說,原本四捨五入的做法,就只能做到最後統計才去處理。
如果個別先四捨五入再做加總處理。
一定會有出入的。如果小計區間多的話。
有時誤差10元以上的情況,也是會發生的。
這就看待帳務人員該如何去整理這樣的帳務了。該如何去處理