Excel 使用“替换”将单元格转换为公式
我有一个Excel文件,里面有几张表格。在每个“A1”单元格中,我将公式保存为文本,格式如下: %=TR('Sheet 1'!C1;'Sheet 1'!$F$1:$F$5;'Frq=D SDate=#1 EDate=#2 Curn=EUR CH=Fd;$B$1;'Sheet 1'!$D$1;'Sheet 1'!$E$1) 我特意以这种格式保存它们,因为公式允许通过插件(xlam)连接到数据库(汤森路透Eikon),并用于从该数据库检索数据。如果文件中没有%-字符,则会立即执行它们,文件会崩溃。因此,我想编写VBA,它逐个删除每个工作表中的字符(Excel 使用“替换”将单元格转换为公式,excel,vba,replace,Excel,Vba,Replace,我有一个Excel文件,里面有几张表格。在每个“A1”单元格中,我将公式保存为文本,格式如下: %=TR('Sheet 1'!C1;'Sheet 1'!$F$1:$F$5;'Frq=D SDate=#1 EDate=#2 Curn=EUR CH=Fd;$B$1;'Sheet 1'!$D$1;'Sheet 1'!$E$1) 我特意以这种格式保存它们,因为公式允许通过插件(xlam)连接到数据库(汤森路透Eikon),并用于从该数据库检索数据。如果文件中没有%-字符,则会立即执行它们,文件会崩溃。因
%
),从而等待大约1或2分钟,直到上一个工作表中的公式检索到数据。我试过几种方法,但都不管用
首先,我尝试用以下代码替换字符:
Dim SearchValue As String
Dim NewValue As String
SearchValue = "%"
NewValue = ""
Selection.Replace What:=SearchValue, Replacement:=NewValue,
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("B1").Replace "%", ""
该代码:
Dim SearchValue As String
Dim NewValue As String
SearchValue = "%"
NewValue = ""
Selection.Replace What:=SearchValue, Replacement:=NewValue,
LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("B1").Replace "%", ""
但只有在我调用查找和替换框并手动按下按钮时,它才会运行
Application.Dialogs(xlDialogFormulaReplace).Show "%", ""
如何使用宏查找和替换长方体
此外,我还尝试在TR(‘表1’!C1;‘表1’!$F$1:$F$5;“Frq=D SDate=#1 EDate=#2 Curn=EUR CH=Fd”;$B$1;‘表1’!$D$1;‘表1’!$E$1)中添加“=”来生成公式,如下:
myformula = Cells(1, 1).Value
Range("B1").Select
ActiveCell.Formula = "=" & myformula
我也失败了
是否有其他可能替换
%
字符?将替换内容写入
VBA公式设置非常以美国-欧洲为中心;它期望您在EN-US系统上使用公式。您可以将公式列表分隔符从分号更改为逗号,或使用来容纳分号列表分隔符。谢谢,我将尝试一下,稍后报告成功的情况。不幸的是,它没有起作用。我使用了
Sheets(“Sheet1”).Cells(1,1)。公式=替换(Sheets(“Sheet1”).Cells(1,1)。Value,Chr(37),vbNullString)
得到了“运行时错误1004”。公式有问题。我在一个更简单的公式(例如,%=SUM(B2:B4)
)上对此进行了测试,结果与预期一样。如果公式是有效的,那么公式的复杂性应该没有差别。除非这是一个数组公式。您知道您在公式中使用了Sheet 1
,但只是在您提供的代码行中写入了Sheet 1
?一个有空格,另一个没有。我在注释中故意将excel工作表1的名称更改为sheet1(我在原始文件中使用另一个名称),但在宏中使用原始名称。简单的例子%=SUM(B2:B4)
对我来说不起作用。第二个代码产生了错误#NAME?(只有当我的活动单元格是A1时)第一个代码根本不起作用。