Vba 在单元格中4位数字的末尾添加一个数字,而忽略其他数字
我试图在单元格中4位数字的末尾添加一个数字,而忽略其他数字 代码将所有内容都添加为零,我想省去所有5位数字Vba 在单元格中4位数字的末尾添加一个数字,而忽略其他数字,vba,excel,Vba,Excel,我试图在单元格中4位数字的末尾添加一个数字,而忽略其他数字 代码将所有内容都添加为零,我想省去所有5位数字 Sub leadingzeros() Dim cel As Range, rg As Range Dim zc As Double Application.ScreenUpdating = False Set rg = Range("G2") 'First cell to be converted Set rg = Range(rg, rg.Worksheet.Cells(Rows
Sub leadingzeros()
Dim cel As Range, rg As Range
Dim zc As Double
Application.ScreenUpdating = False
Set rg = Range("G2") 'First cell to be converted
Set rg = Range(rg, rg.Worksheet.Cells(Rows.Count, rg.Column).End(xlUp)) 'all data in that column
rg.NumberFormat = "@"
On Error Resume Next
For Each cel In rg.Cells
If IsNumeric(cel.Value) Then
d = Val(cel.Value)
cel.Value = Format(d, "00000")
cel.Value = "0" & d
End If
Next
On Error GoTo 0
End Sub
如果您唯一的问题是遗漏任何长度为5的内容,则应该这样做
Sub leadingzeros()
Dim cel As Range, rg As Range
Dim zc As Double
Application.ScreenUpdating = False
Set rg = Range("G2") 'First cell to be converted
Set rg = Range(rg, rg.Worksheet.Cells(Rows.Count, rg.Column).End(xlUp)) 'all data in that column
rg.NumberFormat = "@"
On Error Resume Next
For Each cel In rg.Cells
If IsNumeric(cel.Value) and Len(cel.Value) <> 5 Then 'This could be changed to be less than 5, or equals 4, or whatever the true criteria is
d = Val(cel.Value)
cel.Value = Format(d, "00000")
cel.Value = "0" & d
End If
Next
On Error GoTo 0
End Sub
子引线零()
变暗cel As范围,rg As范围
双精度zc
Application.ScreenUpdating=False
设置rg=Range(“G2”)'要转换的第一个单元格
设置rg=Range(rg,rg.Worksheet.Cells(Rows.Count,rg.Column).End(xlUp))'该列中的所有数据
rg.NumberFormat=“@”
出错时继续下一步
对于rg.单元格中的每个单元格
如果是数值(cel.Value)和Len(cel.Value)5,则“可以将其更改为小于5,或等于4,或任何真正的标准
d=Val(单元值)
单元值=格式(d,“00000”)
cel.Value=“0”和d
如果结束
下一个
错误转到0
端接头
如果您唯一的问题是遗漏任何长度为5的内容,则应该这样做
Sub leadingzeros()
Dim cel As Range, rg As Range
Dim zc As Double
Application.ScreenUpdating = False
Set rg = Range("G2") 'First cell to be converted
Set rg = Range(rg, rg.Worksheet.Cells(Rows.Count, rg.Column).End(xlUp)) 'all data in that column
rg.NumberFormat = "@"
On Error Resume Next
For Each cel In rg.Cells
If IsNumeric(cel.Value) and Len(cel.Value) <> 5 Then 'This could be changed to be less than 5, or equals 4, or whatever the true criteria is
d = Val(cel.Value)
cel.Value = Format(d, "00000")
cel.Value = "0" & d
End If
Next
On Error GoTo 0
End Sub
子引线零()
变暗cel As范围,rg As范围
双精度zc
Application.ScreenUpdating=False
设置rg=Range(“G2”)'要转换的第一个单元格
设置rg=Range(rg,rg.Worksheet.Cells(Rows.Count,rg.Column).End(xlUp))'该列中的所有数据
rg.NumberFormat=“@”
出错时继续下一步
对于rg.单元格中的每个单元格
如果是数值(cel.Value)和Len(cel.Value)5,则“可以将其更改为小于5,或等于4,或任何真正的标准
d=Val(单元值)
单元值=格式(d,“00000”)
cel.Value=“0”和d
如果结束
下一个
错误转到0
端接头
只要稍微简化一下宏,稍微更改一下格式
语句,它就可以正常运行:不需要If
,OnError
,等等
当然,如果您只需要显示,而不需要实际的单元格内容来显示五位数字,您可以简单地自定义列的格式,而无需将值更改为文本。只需稍微简化一下宏,稍微更改
format
语句,它就可以正常运行:不需要if
,OnError
,等
当然,如果您只需要显示,而不需要实际的单元格内容来显示五位数字,您可以简单地自定义列的格式,而无需将值更改为文本。这不是基于VBA的解决方案,但如果您想直接在Excel中执行此操作:
=text(G2, "00000")
或者,如果这是一张表:
=text([@ZIP], "00000")
我意识到这意味着要增加一个专栏,但也许轻松和透明的优势使它值得
如果您同意值相同,但显示有前导零,则“特殊”格式下有邮政编码格式。这与自定义格式“00000”相同。这不是基于VBA的解决方案,但如果您想直接在Excel中执行此操作:
=text(G2, "00000")
或者,如果这是一张表:
=text([@ZIP], "00000")
我意识到这意味着要增加一个专栏,但也许轻松和透明的优势使它值得
如果您同意值相同,但显示有前导零,则“特殊”格式下有邮政编码格式。这与自定义格式“00000”相同。
rg.NumberFormat=“00000”
将前导零位数字添加到四位数字,仅保留五位数字,并保留基础原始数字值。另外,请参阅单元格格式,数字,邮政编码专用和用于检索格式化(显示)数字的。我最喜欢的Zip/Zip+4自定义数字格式之一是[Color5][>99999]00000-0000;[Color3]00000
。下一列中的@Jeeped建议的单元格格式或简单的=IF()
公式都可以很容易地解决此问题。您希望单元格内容为“07405”还是只希望单元格显示7405为07405?(如果您确实希望内容包含前导的“0”,只需删除代码中显示cel.Value=“0”&d
)的行rg.NumberFormat=“00000”
将前导的零位数字添加到四位数字,只保留五位数字,并保留基本的原始数字值。另外,请参阅单元格格式,数字,邮政编码专用和用于检索格式化(显示)数字的。我最喜欢的Zip/Zip+4自定义数字格式之一是[Color5][>99999]00000-0000;[Color3]00000
。下一列中的@Jeeped建议的单元格格式或简单的=IF()
公式都可以很容易地解决此问题。您希望单元格内容为“07405”还是只希望单元格显示7405为07405?(如果您确实希望内容包含前导的“0”,只需删除代码中的cel.Value=“0”&d
)