Excel VBA – 在两个值之间添加零

我已经做了相当多的寻找这个…我没有得到任何地方。

我有一个电子表格(特定列),值如下:

42153-95 54126-3 13613-6331 16136-336 

我的目标是在现有的#之前(和4个地方)添加零。 喜欢:

 42153-0095 54126-0003 13613-6331 16136-0336 

我已经在NumberFormat的引号内尝试了很多不同的选项:

 Worksheets("Sheet1").Columns("C"). _ NumberFormat = "00000-0000" 

到目前为止没有运气。 🙁

任何帮助将不胜感激。

谢谢!

 Sub testFunc() MsgBox addZero("54126-3") End Sub 

'/添加零的function

 Public Function addZero(strVal As String) As String Dim arrTemp Dim strTemp arrTemp = Split(strVal, "-") strTemp = arrTemp(0) & "-" & String(4 - Len(arrTemp(1)), "0") & arrTemp(1) addZero = strTemp End Function 

正如@tigeravatar所说,它可以用一个公式来完成。 使用Evaluate函数,我们可以使用他在评论中给出的公式的数组forms。

您可以将其应用于列C中的值:

 Worksheets("Sheet1").Range("C1:C4").Value = Worksheets("Sheet1").Evaluate("=INDEX(LEFT(C1:C4,6) & TEXT(--MID(C1:C4,7,LEN(C1:C4)),""0000""),)") 

如果你的范围是dynamic的,并且你有一个像lstrow这样的variables的最后一行,你可以用C" & lstrow & "replace所有的C4

 Worksheets("Sheet1").Range("C1:C" & lstrow).Value = Worksheets("Sheet1").Evaluate("=INDEX(LEFT(C1:C" & lstrow & ",6) & TEXT(--MID(C1:C" & lstrow & ",7,LEN(C1:C" & lstrow & ")),""0000""),)") 

select您想要处理和运行的单元格:

 Sub dural() Dim r As Range bry = Array("0000", "000", "00", "0", "") For Each r In Selection ary = Split(r.Value, "-") ary(1) = bry(Len(ary(1))) & ary(1) r.Value = Join(ary, "-") Next r End Sub 

之前:

在这里输入图像说明

之后:

在这里输入图像说明