Vba 动态添加到Excel公式/动态搜索和替换
第一次在这里发帖,如果我遗漏了什么,很抱歉。如果是,请告诉我 因此,当前的问题是: 我有很多公式(数千个)需要更改/添加,但我不确定如何/什么是最聪明的方法 所有公式都类似于:Vba 动态添加到Excel公式/动态搜索和替换,vba,excel,excel-formula,formula,Vba,Excel,Excel Formula,Formula,第一次在这里发帖,如果我遗漏了什么,很抱歉。如果是,请告诉我 因此,当前的问题是: 我有很多公式(数千个)需要更改/添加,但我不确定如何/什么是最聪明的方法 所有公式都类似于: =C5+D5-S5 但其中一些在基本公式之后有一个附加部分,它可以是多个东西,但一个例子是: =C829+D829-S829 +T834+T835+T835+(T836*2) 或许 =SUM(C5:H5)-S5 同时保留“-Sx”之后可能存在的附加部分 我使用的是64位Excel 2016。 我玩过搜索和替换,但没有
=C5+D5-S5
但其中一些在基本公式之后有一个附加部分,它可以是多个东西,但一个例子是:
=C829+D829-S829 +T834+T835+T835+(T836*2)
或许
=SUM(C5:H5)-S5
同时保留“-Sx”之后可能存在的附加部分
我使用的是64位Excel 2016。
我玩过搜索和替换,但没有太大成功。
我有一点使用VBA的经验,所以也许这就是解决这个问题的方法。这个公式将来可能需要再次修改。因此,我想出了如何制作一些VBA来完成这项工作——只要稍加调整,如果以后需要的话,我就可以重用它了 谢谢你的意见!最后的代码发布在下面
Sub RPLF()
Dim idr As Range
Dim crp As Double
Dim lrp As Double
Dim form As String
Dim newform As String
crp = 4
With Worksheets("S-S")
lrp = .Cells(.Rows.Count, "A").End(xlUp).row
End With
For Each idr In Range("A4:" & "A" & lrp)
crp = crp + 1
form = Worksheets("S-S").Range("T" & crp).Formula
newform = Replace(form, "=C" & crp & "+D" & crp & "-S" & crp, "=SUM(C" & crp & ":H" & crp & ")-S" & crp)
Worksheets("S-S").Range("T" & crp).Formula = newform
Next
End Sub
是的,VBA是您问题的答案。到目前为止你写了什么?说实话,没有什么,因为我不确定VBA是答案。我需要使用VBA中的哪些功能?还有,是否有可能为公式的进一步更改重新编写一些代码?您需要获取单元格及其公式的引用。在那之后,是时候根据你的逻辑改变公式了。一旦这项工作开始,开始考虑如何对所有单元格执行此操作。为了更改公式,您只需要对字符串执行一些操作:在字符串中查找字符,参与其中,等等。因此,我编写了一些代码,它在每行中运行,将公式作为字符串返回,我可以在VBA中操作。然而,正如伊根·沃尔夫(Egan Wolf)所说,我没有太多/任何“在字符串上进行操作”的经验。我想我需要做的是找到-Sx部分,并将其和之前的任何内容更改为我的更新公式,同时保留-Sx部分之后的任何内容。有人能给我指出正确的方向吗?谢谢你的回复!
=SUM(C5:H5)-S5
Sub RPLF()
Dim idr As Range
Dim crp As Double
Dim lrp As Double
Dim form As String
Dim newform As String
crp = 4
With Worksheets("S-S")
lrp = .Cells(.Rows.Count, "A").End(xlUp).row
End With
For Each idr In Range("A4:" & "A" & lrp)
crp = crp + 1
form = Worksheets("S-S").Range("T" & crp).Formula
newform = Replace(form, "=C" & crp & "+D" & crp & "-S" & crp, "=SUM(C" & crp & ":H" & crp & ")-S" & crp)
Worksheets("S-S").Range("T" & crp).Formula = newform
Next
End Sub