1
A
回答
2
下面是顯著數字公式:
=ROUND(REFERENCE,SIGFIGS-1-INT(LOG10(ABS(REFERENCE))))
例如,如果你想在A1的值是3個顯著的數字,你會放:
=ROUND(A1,2-INT(LOG10(ABS(A1))))
編輯:我只是把一起快速VBA宏來做到這一點在選擇的每個細胞,如果你想:
Sub ConvertToSigfigs()
Dim Sigfigs As Integer
Sigfigs = 3 'Change this to whatever value you want
Dim cel As Range
For Each cel In Selection
cel.Value = Application.WorksheetFunction.Round(cel.Value, Sigfigs - 1 - Int(Application.WorksheetFunction.Log10(Abs(cel.Value))))
Next
End Sub
注意我用Application.WorksheetFunction.Round()而不是VBA的Round(),因此它可以使用非十進制數。
編輯2:這裏是一個UDF:
Function Sigfig(Inpt As Double, Precision As Integer) As Double
Sigfig = Application.WorksheetFunction.Round(Inpt, Precision - 1 - Int(Application.WorksheetFunction.Log10(Abs(Inpt))))
End Function
編輯3:有一件事這不會做的是保持終端零,例如如果你有4.0001和三舍入無花果,excel將顯示4,而不是4.00。如果這是絕對需要的話,可以在子模塊中添加基於模塊的格式。
一個整潔的項目將使用UDF,然後有一個子解析UDF後將其轉換爲Excel公式,因此您不必另存爲.xlam。
0
我一直在研究一個VBA用戶定義的函數來進行科學舍入與有效數字或有限數量的小數,這是我在一起使用宏。
要在'= SciRound(B3,3)'等工作表上使用,請按Alt + F11打開Visual Basic編輯器,然後從插入菜單中添加一個模塊。複製/粘貼代碼到Module然後使用 像「= SciRound(號或小區位置至圓形,SigFigs,小數位)」
Public Function SciRound(number, sigfigs, Optional decimals As Variant)
' Nov2013 TP
Dim exp As Integer, n As Integer
Dim bdec As Boolean, test As Variant
If (IsEmpty(number) Or IsMissing(number)) = True Then SciRound = CVErr(xlErrNull)
If IsNumeric(number) = False Then SciRound = CVErr(xlErrValue)
If (IsNumeric(sigfigs) = False) Or (sigfigs < 1) Then SciRound = CVErr(xlErrValue)
If (IsMissing(decimals) Or IsEmpty(decimals)) = True Then bdec = False Else bdec = True
If bdec = True Then
If (IsNumeric(decimals) = False) Then SciRound = CVErr(xlErrValue)
If (Int(decimals) <> decimals) Then SciRound = CVErr(xlErrNum)
End If
If IsError(SciRound) = True Then Exit Function
If number = 0 Then SciRound = 0: Exit Function
number = CDec(number): test = Abs(number): n = 0
n = Int((Log(test)/Log(10#))) ' natural log to log10
exp = (sigfigs - n) - 1
If bdec = True Then
If (exp < decimals) Then bdec = False
End If
If bdec = True Then
SciRound = Round((number * 10^decimals), 0) * 10^-decimals
Else
SciRound = Round((number * 10^exp), 0) * 10^-exp
End If
End Function
相關問題
- 1. 舍入有效數字
- 2. R舍入有效數字
- 3. Double.ToString( 「N」)規則上舍入
- 4. 舍入到下一個有效數字
- 5. 四捨五入爲n有效數字
- 6. 舍入到一個有效數字,VB
- 7. 在Python中的舍入規則
- 8. 火狐和Javascript四捨五入規則
- 9. Python - 如何將浮點數舍入爲1的有效數字
- 10. 在Oracle中舍入到特定數量的有效數字
- 11. WPF的有效性規則
- 12. 是否通過舍入
- 13. 使用0.5規則舍入浮點數的方法
- 14. 什麼規則規定Python如何浮動四捨五入?
- 15. 沒有規則使目標'|'通過
- 16. 舍入到有效數字 - 缺少零點
- 17. R2OpenBUGS將DIC舍入爲4位有效數字
- 18. 通過在java中舍入來減少數字長度
- 19. 通過重寫規則
- 20. 如何使用3位有效數字寫入字符串而不捨入
- 21. 編碼字符串列數值通過預定義的規則
- 22. 通過格式化宏有效字數
- 23. Python的 - 通過四捨五入
- 24. 的Javascript數學效率四捨五入
- 25. 如何在java中將數字舍入到6個有效數字?
- 26. 舍入數字javascript - 數學
- 27. 數據庫插入與「if else」規則通過pdo
- 28. lambda函數不接受通過輸入映射規則(Python)
- 29. 有效的重定向規則的web.config
- 30. R舍入函數舍入