我想问一下,如果单元格中已包含数字,如何将字符0
置于单元格中。
为了澄清我的意思,如果单元格中的数字是5
,我想在数字5
之前加上0
,以得到结果05
。
据我所知,单元格格式应为TEXT以避免自动Excel校正。但是,由于细胞中有几个不同的特征,这个问题是具体的。在某些时候,我在同一列中的单元格中有不同的字符(1
,2
,3
,AV
,AR
,IX
等等。)。
例如:我想选择K列,找到一位数(1
,2
,3
,-9
)的数字字符并粘贴{ {1}}之前有两个空格数字,例如0
,01
,02
,...
当然,用宏。我知道如何将Text格式化,但不知道如何管理整个宏函数来选择列K,将整列格式化为文本,在列中找到一个数字并在其前面粘贴03
。 / p>
有人知道怎么做吗? 非常感谢提前。
答案 0 :(得分:1)
有两种解决方案:
此解决方案的优点是数字仍然是数字(不是文本),但使用前导零进行格式化。因此,您仍然可以像以前一样使用这些数字进行计算。
Public Sub ChangeNumberFormat()
ThisWorkbook.Worksheets("YourDesiredSheetName").Columns("K").NumberFormat = "00"
'this will keep them numbers but only change the format of them
End Sub
请注意,您不需要使用VBA执行此操作,只需为列K设置用户定义的单元格格式00
(使用 Ctrl + 打开格式单元格1 )。
如果您确实需要将它们转换为文本,这将是一种可能的解决方案。但我真的不建议这样做,因为你不能用这些“数字”计算,因为它们被转换为文本。
诀窍是首先使用numberformat格式化数字,然后将其转换为文本(请参阅代码中的注释)。
Option Explicit 'force variable declaring
Public Sub FixLeadingZerosInText()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("YourDesiredSheetName") '<-- change your sheet name here
Dim lRow As Long
lRow = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row 'find last used row in column K
Dim iCell As Range
For Each iCell In ws.Range("K1:K" & lRow) 'loop from row 1 to last used in column K
If iCell.Value < 10 And iCell.Value > -10 Then 'check if it is a one digit number
Dim tmpText As String
tmpText = Format(iCell.Value, "00") 'format the one digit number
iCell.NumberFormat = "@" 'convert number to text
iCell.Value = tmpText 're-write formatted number
End If
iCell.NumberFormat = "@" 'make all other numbers in column K formatted as text too
Next iCell
End Sub