一系列 Microsoft 試算表軟體,具有可用來對資料進行分析、製圖及通訊的工具。
立捷 陳您好,在收到您的回復之後,我們進行了一些研究。
我已經向您的私信分享了這個文檔,您可以進行參考。
首先,我們嘗試通過現有的公式幫助您解決這個問題:
=IF(OR(MOD(D2,1000)>=800,MOD(D2,1000)<200),CEILING(D2,1000),MROUND(D2,500))
稍後您也可以查看文檔中的F列。
這個公式是通過計算百位的數值,並根據它是0或1,2至7以及8和9來進位。
但這個公式處理115282這個數值的時候遇到了問題,它無法轉換為您想要呈現的115000,而是會進位成116000。因此,我們的技術人員在這個思路的基礎上,通過VBA代碼的方式實現了這個功能。
使用VBA(Visual Basic for Applications)編寫一個宏能夠讓您自動地應用這樣的進位邏輯到整個列或範圍的單元格。下面是一個宏示例,您可以按照這個邏輯自行調整和運用:
Function CustomRounding(value As Double) As Double
Dim hundreds As Integer
Dim result As Double
hundreds = (value Mod 1000) \ 100 '取得百位数字
If hundreds <= 1 Then
' 如果百位数字是0或1,保持不变
result = Int(value / 1000) * 1000
ElseIf hundreds >= 8 Then
' 如果百位数字是8或9,進位到下一个千的倍数
result = (Int(value / 1000) + 1) * 1000
Else
' 如果百位数字在2到7之间,進位到当前千的倍数+500
result = (Int(value / 1000) * 1000) + 500
End If
CustomRounding = result
End Function
這是一個自定義的函數CustomRounding,您可以在Excel的VBA編輯器中插入這段代碼:
- 按下Alt + F11以開啟VBA編輯器。
- 在“插入”菜單中選擇“模塊”來創建一個新的模塊。
- 將上述代碼粘貼到這個模塊窗口中。
- 按下Ctrl + S來保存您的工作,然後關閉VBA編輯器。
- 在Excel中,您現在可以像使用其他函數一樣使用CustomRounding函數。例如,在C2單元格輸入**=CustomRounding(B2)**來得到B2單元格的進位值。
在我們爲您提供的示例文檔中,您可以在G列查看宏的效果。要查看當前的代碼,您可以在底部工作表名稱的位置右擊(也就是這個文檔裏面的Sheet1),選擇 檢視程式碼 ,在窗口左側找到 模組 ,並點擊它旁邊的加號,就可以看到這段代碼了。
記得在使用宏之前要保存您的工作,並確保您的Excel設置允許運行宏。如果您對這個過程有任何疑問,或者需要進一步的幫助來實現這個功能,請隨時聯繫我。
祝好
Eliac | 微軟社區支持專員