前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >将所选区域中的所有数字四舍五入为固定位数的VBA代码

将所选区域中的所有数字四舍五入为固定位数的VBA代码

作者头像
fanjy
发布2024-04-19 14:30:29
770
发布2024-04-19 14:30:29
举报
文章被收录于专栏:完美Excel完美Excel

excelperfect

标签:VBA

在分析测量数据时,通常以固定数量的数字显示结果,称为有效数字。数字的数量取决于测量本身的准确性。虽然Excel有几种方法可以对结果进行四舍五入,但没有一种方法可以将四舍五舍五入处理到指定的位数。

下面的程序将选择区域中的所有数字四舍五入到指定的位数:

代码语言:javascript
复制
Sub RoundToDigits()
 Dim dDigits As Double
 Dim iCount As Integer
 Dim iRoundDigits As Integer
 Dim rArea As Range
 Dim rCell As Range
 Dim rRangeToRound As Range
 Dim sFormatstring As String
 Dim vAnswer As Variant
 
 On Error Resume Next
 
 Set rRangeToRound = Selection
 If rRangeToRound Is Nothing Then Exit Sub
 vAnswer = InputBox("多少位数字?", "四舍五入函数")
 If TypeName(vAnswer) = "Boolean" Then Exit Sub
 If vAnswer = "" Then Exit Sub
 iRoundDigits = CInt(Application.Max(1, vAnswer))
 On Error GoTo 0
 For Each rArea In rRangeToRound.Cells
   For Each rCell In rArea
     If IsNumeric(rCell.Value) And rCell.Value <> "" Then
       sFormatstring = "0"
       If rCell.Value = 0 Then
         dDigits = 3
       Else
         dDigits = Log(Abs(rCell.Value)) / Log(10)
         dDigits = -Int(dDigits) + iRoundDigits - 1
         dDigits = Application.Min(Len(Abs(rCell.Value)), dDigits)
       End If
       If dDigits >= 1 Then
         If Int(rCell.Value) = 0 Then
           sFormatstring = sFormatstring & "." & String(dDigits - 1, "0")
         Else
           sFormatstring = sFormatstring & "." & String(dDigits, "0")
         End If
       ElseIf dDigits < 0 Then
         sFormatstring = sFormatstring & "." _
           & String(iRoundDigits - 1, "0") & "E+00"
       End If
       rCell.NumberFormat = sFormatstring
     End If
   Next rCell
 Next rArea
End Sub

注:代码来源于jkp-ads.com,供参考。

欢迎在下面留言,完善本文内容,让更多的人学到更完美的知识。

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-18,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 完美Excel 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com