VBA Excel 2013查找特定字符串长度并添加值

VBA Excel 2013查找特定字符串长度并添加值,vba,excel,Vba,Excel,我正在尝试编写一个宏来查找一个单元格是否有5个数值,如果有,我需要在末尾添加一个0 我的宏中已经有一些步骤 比如说 电池BZ2=9.48E+00 My macro查找小数点并将其替换为94811E-5 在这种情况下,我需要添加一个零,因为有5个数值,并且仅当最后三个字符是E-5时 预期结果为948110E-5 我正在使用存储为文本的数字 有人能帮我吗 Sub TextFormat() Dim c As Range Dim d As Range For Each c I

我正在尝试编写一个宏来查找一个单元格是否有5个数值,如果有,我需要在末尾添加一个0

我的宏中已经有一些步骤

比如说

  • 电池
    BZ2
    =9.48E+00
  • My macro查找小数点并将其替换为
    94811E-5
  • 在这种情况下,我需要添加一个零,因为有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。
    left
    函数使用前5个字符。
    isNumeric
    检查它们是否为数字。然后剩下的,取前5个字符,加0,然后
    取从右开始到长度-5的所有字符(我们已经有了前5个字符)

    编辑 正如所指出的,如果已经有一个0,比如123450E-5,那么将添加一个额外的0

    添加
    和len(text)=8
    ,这样只有当有8个字符时才会添加0

    Excel没有这样做,因此为了提高编码效率,最好先将
    分解为
    IF
    ,然后再分解为最有可能出错的
    IF

    另外,不要使用变量函数
    Left
    Right
    而是使用字符串函数
    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
    

    请显示您的代码我想我需要在最后一个if?之后添加下一个步骤,不是失败,只是添加一个额外的0 haha可以添加
    如果len(text)=8
    。比如…
    和len(text=8)
    因为len(Left(text,len(text)-3))=5(Left(text,len(text)-3)
    对于长度=8是很特别的