首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA Excel 2013查找特定字符串长度并添加值

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

Stack Overflow用户
提问于 2014-01-30 16:03:23
回答 2查看 2.3K关注 0票数 1

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

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

例如

  1. 单元格BZ2 = 9.48E+00
  2. 我的宏查找小数点并将其替换为94811E-5
  3. 在这种情况下,我需要添加一个Zero,因为只有当最后三个字符是E-5时,才有5个数字值。

预期结果为948110E-5

我使用的是一个作为文本存储的数字。

有人能帮我吗?

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

发布于 2014-01-30 16:12:22

使用此条件

代码语言:javascript
复制
 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,然后right接受从右开始到长度-5的所有字符(我们已经有了前5个字符)

编辑

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

添加ANd len(text) = 8,以便只在有8个字符的情况下添加0。

票数 1
EN

Stack Overflow用户

发布于 2014-02-01 05:14:44

Excel不使用短路,因此为了提高编码效率,最好先将AND分解为带有最可能的错误的IF's,然后才是漏洞

另外,永远不要使用变体函数LeftRight,而是使用字符串函数Left$Right$

链接是一个优秀的资源重新编码优化。

重述先前的答案如下:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21461436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档