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
之前:
之后: