Power BI DAX MROUND 函數:將數值捨入至最接近的指定倍數完整指南
Power BI DAX MROUND 函數:將數值捨入至最接近的指定倍數完整指南
📅 發布日期:2026-09-21
🏷️ 分類:數學與三角函數 DAX 函數
💡 函數速查卡
| 函數名稱 | MROUND |
|---|---|
| 所屬類別 | 數學與三角函數 (Math and Trig functions) |
| 傳回類型 | 十進位數字 (Decimal Number) 或整數 (Integer) |
| 常用頻率 | ★★★☆☆ |
在 Power BI 的 DAX 數據建模中,MROUND 函數用於將給定數字四捨五入至最接近的**指定倍數(Multiple)**。不同於一般取特定小數位數的四捨五入,MROUND 適合應用於以「固定區間/單位」進行計價或定價的業務情境(例如:以 500 元為單位進位、以 0.25 個小時為單位結算工時、或最小交易面額規則)。
一、 基本語法與參數
MROUND 函數的標準 DAX 語法結構如下:
MROUND(<number>, <multiple>)
| 參數 | 說明 | 預設值 / 必填 |
|---|---|---|
number |
要進行捨入運算的數值或欄位引用。 | 必填 |
multiple |
要捨入到的倍數基數。**注意:符號必須與 number 相同**(同為正數或同為負數)。 |
必填 |
二、 核心功能說明
MROUND 函數會將數字除以指定的倍數,若餘數大於或等於倍數的一半,則會朝遠離零的方向捨入;若餘數小於倍數的一半,則朝靠近零的方向捨入。
在 Power BI 報表與商業情境中,常見的實務應用包括:
- 價格與面額標準化:將產品成本或售價捨入至最接近的 5 元、10 元或 100 元。
- 時間工時結算:將員工實際的工作分鐘數,捨入至最接近的 15 分鐘(即 0.25 小時)。
- 包裝與庫存計算:依據批量採購單位(如整箱 12 件或 50 件)規範進行預測調整。
三、 實用 DAX 範例
範例 1:基本數值倍數捨入
計算最接近的指定整數倍數:
// 將 13 捨入至最接近的 3 的倍數,傳回 12 (因 13 距離 12 比 15 近)
MroundValue1 = MROUND(13, 3)
// 將 14 捨入至最接近的 3 的倍數,傳回 15
MroundValue2 = MROUND(14, 3)
範例 2:小數位數與工時結算(0.25 小時為單位)
將工時紀錄捨入至最接近的 15 分鐘(0.25 小時):
// 假設實際工作時數為 8.35 小時,捨入至最接近的 0.25 小時,傳回 8.25
RoundedHours = MROUND(8.35, 0.25)
// 若實際工作時數為 8.38 小時,傳回 8.50
RoundedHours2 = MROUND(8.38, 0.25)
範例 3:動態防錯與負數保護處理
為避免傳入正負符號不符的參數導致運算錯誤,可使用 SIGN 函數動態調整倍數符號:
// 依據資料列數值的正負號,自動修正多重倍數的符號
SafeMROUND =
VAR BaseVal = 'Sales'[Amount]
VAR BaseMultiple = 50
RETURN
IF(
ISBLANK(BaseVal),
BLANK(),
MROUND(BaseVal, SIGN(BaseVal) * BaseMultiple)
)
四、 常見陷阱與注意事項
⚠️ 注意事項 1:正負號不一致會引發 Evaluation Error
number 與 multiple 的符號必須保持一致。如果一個為正數,另一個為負數(例如 MROUND(-10, 3)),DAX 會回傳錯誤。請務必搭配 SIGN 或 ABS 做符號整合。
⚠️ 注意事項 2:強制無條件進位/捨去的需求
MROUND 遵循的是「四捨五入」法則(取最近的倍數)。若業務需求規定必須「無條件無條件進位至指定倍數」(如無條件以 100 為單位向上加)或「無條件捨去」,應改用 CEILING 或 FLOOR 函數。
五、 相關函數推薦
ROUND:將數字四捨五入至指定的小數位數。CEILING:將數字無條件向上捨入至最接近的指定倍數。FLOOR:將數字無條件向下捨入至最接近的指定倍數。SIGN:判斷數字的正負符號(正數傳回 1,負數傳回 -1,零傳回 0)。
六、 官方文件連結
想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:
留言
張貼留言