如何在excelvba中更改数字格式
我在excel中有一个H列,其值为以下类型如何在excelvba中更改数字格式,vba,excel,Vba,Excel,我在excel中有一个H列,其值为以下类型 158.60 158.60 170.58 数字格式是数字,现在我需要将其更改为如下所示 158,60 158,60 170,58 158,59 158,59 170,57 我已经完成了以下代码,但结果显示很奇怪 Dim ws1 As Worksheet Dim lastRowk As Long Set ws1 = ThisWorkbook.Sheets("Sheet1") lastRowk = ws1.Cells(Rows.Count
158.60
158.60
170.58
数字格式是数字,现在我需要将其更改为如下所示
158,60
158,60
170,58
158,59
158,59
170,57
我已经完成了以下代码,但结果显示很奇怪
Dim ws1 As Worksheet
Dim lastRowk As Long
Set ws1 = ThisWorkbook.Sheets("Sheet1")
lastRowk = ws1.Cells(Rows.Count, "H").End(xlUp).Row
For Each m In ws1.Range("H2:H" & lastRowk)
m.Value = "'" & m.Value
Next m
Worksheets("Sheet1").Columns("H").Replace What:=".", Replacement:=",", SearchOrder:=xlByColumns, MatchCase:=True
For Each m In ws1.Range("H2:H" & lastRowk)
If m.Value Like "*,*" Then
'Nothing
Else
m.Value = m.Value & ",00"
End If
Next m
我得到的结果如下:
158,59742
158,59742
170,57936
但我希望它像下面这样
158,60
158,60
170,58
158,59
158,59
170,57
公布最终结果一点也不奇怪。看起来您的初始值确实是数字,但格式为9.99,因此在逗号后仅显示两位数字。然而,这只是显示,Excel保留数字的真实值,这些数字显然有5位数字 一个简单的解决方案是在制作物品之前,将小数部分四舍五入到2位:
cell.value = round(cell.value,2)
另一个解决方案是保留您已经完成的操作,即在操作结束时将最后两位数四舍五入:
For Each m In ws1.Range("H2:H" & lastRowk)
If m.Value Like "*,*" Then
Dim i As Integer
Dim strBefore As String
Dim strAfter As String
Dim dblTemp As Double
Dim strTemp As String
dim strDecimalSign as string
' Change this according to the decimal sign on your system:
strDecimalSign = ","
' or :
' strDecimalSign = "."
' get comma position
i = InStr(m.value, ",")
' get the value before the comma
strBefore = Left(m.value, i - 1)
' get the value after the comma
strAfter = Mid(m.value, i + 1)
' make a temp double with 2 digits
dblTemp = Round(CDbl("0" & strDecimalSign & strAfter), 2)
' Convert back to string
strTemp = CStr(dblTemp)
' keep only the rounded 2 digits part
strAfter = Replace(strTemp, "0" & strDecimalSign, "")
'join all parts
m.value = strBefore & "," & strAfter
Else
m.Value = m.Value & ",00"
End If
Next m
写在我的手机上,未经测试
第三种解决方案是更改小数分隔符格式:
您得到的结果是什么?我得到的结果是1,58,59742 1,58,59742 1,70,579361您的单元格格式如何?2您的Excel的本地设置是什么?@SiddharthRout我已经更改了查询。请您检查一下……我想一些字符串操作可以解决这个问题您还没有回答我的问题: