Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在单元格中4位数字的末尾添加一个数字,而忽略其他数字_Vba_Excel - Fatal编程技术网

Vba 在单元格中4位数字的末尾添加一个数字,而忽略其他数字

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

我试图在单元格中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.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