VBA Excel 2013查找特定的string长度并添加一个值

我想写一个macros来查找一个单元格是否有5个数字值,如果是这样,我需要在最后添加一个0。

我的macros已经有一些步骤了。

例如

  1. 单元格BZ2 = 9.48E + 00
  2. 我的macrosfind小数点并用94811E-5replace它
  3. 在这种情况下,我需要添加一个零,因为有5个数值,只有当最后三个字符是E-5才是。

预期的结果是948110E-5

我正在使用存储为文本的数字。

谁能帮我吗?

 Sub TextFormat() Dim c As Range Dim d As Range For Each c In Sheets("order_export").Range("F2:F10000").Cells If StrComp(Right(c.Value, 1), "R", vbTextCompare) = 0 Then c.Offset(0, -1).Value = c.Offset(0, -1).Value & "R" c.Value = Left(c.Value, Len(c.Value) - 1) End If Next c For Each d In Sheets("order_export").Range("BZ2:BZ10000").Cells If InStr(1, d.Value, ".", vbTextCompare) > 0 Then d.NumberFormat = "@" d.Value = Replace(d.Value, ".", "") d.Value = d.Value & "E-5" End If Next d End Sub 

使用这个条件

  if isNumeric(left(text,5)) AND right(text,3) = "E-5" then 'add zero text = left(text,5) & "0" & right(text, len(text) - 5) end if 

如果前5个字符是数字,最后3个是e-5,则在前5个字符之后加0。 leftfunction是前5个字符。 isNumeric检查它们是否是数字。 然后剩下的就是前5个字符,放0,然后right的所有字符从右边开始直到长度-5(我们已经有了前5个字符)

编辑

正如指出的那样,如果已经有一个0,就像123450E-5那么会增加一个额外的值。

添加一个ANd len(text) = 8 ,这样只有在有8个字符时才加上0。

Excel不会短路,所以为了提高编码效率,最好先将最可能出错的AND分解成IF's ,然后再违规

也从来没有使用变种函数LeftRight使用string函数Left$Right$来代替

这个链接是一个很好的资源重新编码优化。

重新切割较早的答案将是这样的:

 c = "94811E-5" If Len(c) = 8 Then If IsNumeric(Left$(c, 5)) Then If Right$(c, 3) = "E-5" Then c = Left$(c, Len(c) - 3) & "0" & Right$(c, 3) End If End If MsgBox c