查找和替换强制科学记数法格式

use*_*466 5 excel vba

我希望 Excel 在使用 VBA 进行查找和替换时,停止用等效的科学记数法替换包含 E 的完美字符串。

我尝试通过使用ReplaceFormat.NumberFormat = "@"来强制它无济于事。

这是说明我的问题的代码:

Sub testsub()

ActiveSheet.Columns("A:A").NumberFormat = "@"

fnd = "2"
rplc = "39456E10"

Range("A1").Value = fnd
Range("A2").Value = rplc

Application.ReplaceFormat.NumberFormat = "@"

  ActiveSheet.Cells.Replace what:=fnd, Replacement:=rplc, _
    LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
    SearchFormat:=False, ReplaceFormat:=True
End Sub
Run Code Online (Sandbox Code Playgroud)

这就是结果

在此处输入图片说明

Jvd*_*vdV 3

好吧,这取决于你的物体中有多少细胞Range。您可以选择一种Application.Substitute方法。

\n\n

我认为只要您使用显式返回String数据类型的方法/函数,就可以了。既然Substitute确实如此,您可以尝试如下所示:

\n\n
Sub Test\n    Range("A1:A2").Value = Application.Substitute(Range("A1:A2"), "2", "39456E10")\nEnd Sub\n
Run Code Online (Sandbox Code Playgroud)\n\n

假设您的格式Range已经格式化为"@". 如果没有,您可能希望将其包含在代码中。这也适用于更大规模的二维阵列,例如:A1:Z1000

\n\n

例如:

\n\n

在此输入图像描述>在此输入图像描述

\n\n
\n\n

我认为这同样适用于示例RegEx.Replace方法和Replace函数(不要与方法混淆Replace)。而不是上面的需要迭代。

\n\n
\n\n

这是一个有趣的事实,Application.Substitute我们还可以知道VBA我们想要替换哪个搜索值出现。例如,仅替换第二次出现的数字2

\n\n

在此输入图像描述

\n\n
Range("A1:A4") = Application.Substitute(Range("A1:A4"), "2", "39456E10", 2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

在此输入图像描述

\n\n
\n\n

然而,根据 @P\xe1\xb4\x87\xca\x9c 他的回答,撇号的存在是有原因的...... =)。因此,这将是我个人的偏好(并且应该更快)。

\n