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
numbermultiple 的符號必須保持一致。如果一個為正數,另一個為負數(例如 MROUND(-10, 3)),DAX 會回傳錯誤。請務必搭配 SIGNABS 做符號整合。
⚠️ 注意事項 2:強制無條件進位/捨去的需求
MROUND 遵循的是「四捨五入」法則(取最近的倍數)。若業務需求規定必須「無條件無條件進位至指定倍數」(如無條件以 100 為單位向上加)或「無條件捨去」,應改用 CEILINGFLOOR 函數。

五、 相關函數推薦

  • ROUND:將數字四捨五入至指定的小數位數。
  • CEILING:將數字無條件向上捨入至最接近的指定倍數。
  • FLOOR:將數字無條件向下捨入至最接近的指定倍數。
  • SIGN:判斷數字的正負符號(正數傳回 1,負數傳回 -1,零傳回 0)。

六、 官方文件連結

想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...