2017-07-18 2 views
0

Zum ersten Mal hier, so tut mir leid, wenn mir etwas fehlt. Wenn ja, lass es mich wissen.Dynamische Ergänzung zu einer Excel-Formel/Dynamische Suche und ersetzen

Also, das Problem zur Hand: Ich habe viele Formeln (Tausende), die ich ändern/hinzufügen muss, aber ich bin unsicher, wie/was der klügste Weg, es zu tun ist.

alle Formeln in etwa so aussehen:

=C5+D5-S5 

Aber einige von ihnen nach der Grundformel ein zusätzliches Teil haben, könnte es mehrere Dinge sein, aber ein Beispiel ist:

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

Or

 
=C1101+D1101-S1101 +T1102 

ich möchte den Basisteil ändern:

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

Oder vielleicht

=SUM(C5:H5)-S5 

Während noch den zusätzlichen Teil zu halten, dass es sein könnte, nachdem "-Sx"

Ich verwende Excel 2016 64-bit. Ich habe mit Suchen und Ersetzen ohne viel Erfolg herumgespielt. Ich habe ein wenig Erfahrung mit VBA, vielleicht ist das der Weg, dies zu lösen.
Die Formel muss möglicherweise in Zukunft erneut geändert werden.

+0

Ja, VBA ist die Antwort auf Ihre Frage. Was hast du bisher geschrieben? – Sam

+0

Nichts um ehrlich zu sein, da ich nicht wirklich sicher war, dass VBA die Antwort war. Welche Funktionalität in VBA muss ich verwenden? Und wäre es möglich, etwas zu programmieren, das für weitere Änderungen der Formel wieder funktioniert? –

+1

Sie müssen einen Verweis auf eine Zelle und ihre Formel erhalten. Danach ist es an der Zeit, die Formel entsprechend Ihrer Logik zu ändern. Sobald das funktioniert, beginnen Sie darüber nachzudenken, wie Sie dies an alle Zellen tun können. – Sam

Antwort

0

Also, ich habe herausgefunden, wie man einige VBA macht, die den Job gemacht haben - und mit ein paar Feinabstimmungen werde ich es später wiederverwenden können.

Danke für die Eingabe! Der endgültige Code ist unten veröffentlicht.

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 
Verwandte Themen