2017-07-18 52 views
0

第一次发布在这里,所以对不起,如果我失去了一些东西。如果有,请让我知道。动态添加到Excel公式/动态搜索和替换

所以,手头上的问题: 我有很多公式(数千),我需要改变/添加,但我不确定如何/最聪明的方法是做什么。

所有的公式看起来像:

=C5+D5-S5 

但其中一些具备的基本公式后的附加部分,也可能是多件事情,而是一个例子是:

 
=C829+D829-S829 +T834+T835+T835+(T836*2) 

或者

 
=C1101+D1101-S1101 +T1102 

我想将基本部分更改为:

=C5+D5+E5+F5+G5+H5-S5 

或许

=SUM(C5:H5)-S5 

,同时仍保持 “-Sx”

我使用Excel 2016的64位之后,可能是那里的额外部分。 我玩过搜索和替换没有太多成功。 我有一点使用VBA的经验,所以也许这是解决这个问题的方法。
该公式可能需要在未来再次更改。

+0

是的,VBA是你的问题的答案。到目前为止你写了什么? – Sam

+0

没有说实话,因为我不确定VBA是否是答案。 需要使用VBA中的哪些功能?是否有可能编写一些能够对公式做进一步修改的工具? –

+1

您需要获取对单元格及其公式的引用。之后,是时候根据你的逻辑改变公式。一旦工作,开始思考如何对所有单元格执行此操作 – Sam

回答

0

所以,我想出了如何制作一些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