Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用“替换”将单元格转换为公式_Excel_Vba_Replace - Fatal编程技术网

Excel 使用“替换”将单元格转换为公式

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),并用于从该数据库检索数据。如果文件中没有%-字符,则会立即执行它们,文件会崩溃。因

我有一个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,它逐个删除每个工作表中的字符(
%
),从而等待大约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时)第一个代码根本不起作用。