2017-07-18 53 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