Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo zusammen,
übe gerade fleißig Excel und VBA versuche auch anderen zu helfen. In diesem Zusammenhang habe ich eine Frage wo ich nicht weiterkomme...
Im A1 steht die Formel: =B1+C1+D1+E1 diese Formel kopiere ich per VBA nach A10 z.B. und durch die relativen Bezüge passt diese sich an =B10+C10+D10+E10, soweit so gut! Ich möchte aber nach dem Kopiervorgang, wie kann ich per VBA das draus machen? =$B$10+$C$10+$D$10+E1, das nächste mal kopiere ich wieder die Formel aus A1 nach A15 z.B. und dann soll auch wieder nach dem Kopieren, der relative Zellbezug der ersten 3 Zellen in Absolut umgewandelt werden das letzte bleibt relativ!?
Vielen Dank LG Alexandra
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Der Spaß geht so Code: Sub ersetzen() Dim zeichen As Integer, laenge As Integer, i As Integer Dim Formel As String
Range("A1").Copy Range("A10").PasteSpecial xlFormulas
With Range("A10") .Formula = Application.ConvertFormula(.Formula, xlA1, xlA1, xlAbsolute, Range("A10")) Formel = .Formula End With
For i = 1 To 2 laenge = Len(Formel) zeichen = InStrRev(Formel, "$") Formel = Left(Formel, zeichen - 1) & Right(Formel, laenge - zeichen) Next i
Range("A10").Formula = Formel
End Sub
Das Ändern von relativ zu absolut ginge mit einem Einzeiler (bzw. Dreizeiler in diesem Beispiel): Code: With Range("A10") .Formula = Application.ConvertFormula(.Formula, xlA1, xlA1, xlAbsolute, Range("A10")) End With
und xlRelative für den umgekehrten Weg. Nur dein Sonderwunsch macht es etwas komplizierter.
Schöne Grüße Berni
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hi Berni,
vielen lieben Dank! Ich hab gedacht ich kann das auf meine Formel anpassen, aber leider bekomme ich das nicht hin! :(
Seit eine Stunde versuche ich zu blicken, was du da gezaubert hast und ich verstehe nur Bahnhof! :)
Damit es einfach bleibt, habe ich die Formel =B1+C1+D1+E1 vorhin angegeben und dachte ich kann es mir dann schon zurecht basteln auf meine Formeln! :( Ausgangsbasis, also zu kopierender Bereich, das als Vorlage dient:
=WENNFEHLER(H5-(((P4-Q4)*(H5*100)/I4)/100);0) =WENNFEHLER(H6-(((P4-Q4)*(H6*100)/I4)/100);0) =WENNFEHLER(H7-(((P4-Q4)*(H7*100)/I4)/100);0) =WENNFEHLER(H8-(((P4-Q4)*(H8*100)/I4)/100);0) =WENNFEHLER(H9-(((P4-Q4)*(H9*100)/I4)/100);0) =WENNFEHLER(H10-(((P4-Q4)*(H10*100)/I4)/100);0) =WENNFEHLER(H11-(((P4-Q4)*(H11*100)/I4)/100);0) =WENNFEHLER(H12-(((P4-Q4)*(H12*100)/I4)/100);0) =WENNFEHLER(H13-(((P4-Q4)*(H13*100)/I4)/100);0) =WENNFEHLER(H14-(((P4-Q4)*(H14*100)/I4)/100);0)
und so soll es nach dem kopieren aussehen, wenn ich z.B. ab Zelle A25 einfüge!
=WENNFEHLER(H25-((($P$4-$Q$4)*(H25*100)/$I$4)/100);0) =WENNFEHLER(H26-((($P$4-$Q$4)*(H26*100)/$I$4)/100);0) =WENNFEHLER(H27-((($P$4-$Q$4)*(H27*100)/$I$4)/100);0) =WENNFEHLER(H28-((($P$4-$Q$4)*(H28*100)/$I$4)/100);0) =WENNFEHLER(H29-((($P$4-$Q$4)*(H29*100)/$I$4)/100);0) =WENNFEHLER(H30-((($P$4-$Q$4)*(H30*100)/$I$4)/100);0) =WENNFEHLER(H31-((($P$4-$Q$4)*(H31*100)/$I$4)/100);0) =WENNFEHLER(H32-((($P$4-$Q$4)*(H32*100)/$I$4)/100);0) =WENNFEHLER(H33-((($P$4-$Q$4)*(H33*100)/$I$4)/100);0) =WENNFEHLER(H34-((($P$4-$Q$4)*(H34*100)/$I$4)/100);0)
Vielen lieben Dank Alexandra
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Liebe Alexandra, das finde ich jetzt etwas ärgerlich, denn hättest du gleich von Anfang an die richtige Formel bekanntgegeben, wäre die Lösung ganz anders ausgefallen. Diese Formel muss nun gänzlich anders behandelt werden. Ich habe mich daran orientiert, dass die letzte Stelle der Formel nicht absolut werden darf. Nun ist es auf einmal so, dass zwei Stellen mittendrin in der Formel auf absolut umgestellt werden sollen. Und bevor ich mir weiter Gedanken mache, beantworte bitte zuerst, ob der Teil "P4-Q4" bzw. "$P$4-$Q$4" variabel sein muss oder nicht. Denn wenn nicht, dann verwende doch einfach Ersetzen: Code: Range("A25").Formula = Replace(Range("A1").Formula, "P4-Q4", "$P$4-$Q$4") Range("A25").Formula = Replace(Range("A25").Formula, "I4", "$I$4")
Schöne Grüße Berni
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hallo Berni,
sorry, wie gesagt ich wollte es einfach halten!
Ja, "P4-Q4" bzw. "$P$4-$Q$4" und $I$4 bzw. I4 müssen variabel sein, deswegen kopiere ich diese Formel ohne absoluter Bezug diese passt sich dann entsprechend an, und danach möchte ich die absoluten Bezüge setzen, damit beim Zeilen einfügen etc. damit diese immer ihre absoluten werte behalten!
Vielen Dank & sorry nochmals, das nächste mal stellt ich gleich die richtige Formel rein! :(
LG Alexandra
Registriert seit: 03.10.2018
Version(en): 2010 ProPlus / 2016 ProPlus
Hallo Alexandra,
mal ein Tip ... schreib doch die Formel gleich absolut in die erste Zelle, dann brauchst du das Umbauen nicht. Die Originalformel interessiert es sicher nicht, ob sie absolut oder relativ ist ... oder könnte sie deshalb von anderen Formeln gemobt werden ? :17:
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hi Sabina,
wenn die Formel gleich absolute Bezüge hat dann passt sie sich nicht mehr an an der neuen Umgebung sonder behält immer starr die Bezüge bei. Ich möchte das die Formel zuerst sich anpassen an der neuen Umgebung und diese dann festmachen für den oft vorkommenden Fall, dass man Zeilen einfügt mitten drin im kopierte Bereich. Denn dann würde die Formeln die unter der eingefügten Zeilen ohne abholuten Bezug, Ihren Bezug verlieren!
LG Alexandra
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
Wenn es heute P4:Q4 und morgen aber M5:N5 ist, dann sehe ich keinen simplen Weg, das zu bewerkstelligen. Die Möglichkeit, die komplette Formel auf relativ/absolut zu setzen, habe ich dir bereits gezeigt. Aber wie willst du VBA sagen, dass der Bezug einmal geändert werden soll und einmal wieder nicht. Die Stelle der betreffenden Zeichen ändern sich ja auch in Abhängigkeit der Zeilennummer. Die einzige Idee, die ich noch hätte, wäre der Weg über eine Inputbox.
Schöne Grüße Berni
Registriert seit: 27.04.2014
Version(en): Privat: Office Home & Business 2019 / Arbeit: MS365
Hi Berni,
spalte bleiben immer gleich nur die Zeilen ändern sich!
"P4-Q4" bzw. "$P$4-$Q$4" und $I$4 bzw. I4 "P25-Q25" bzw. "$P$25-$Q$25" und $I$25 bzw. I25
LG Alexandra
Registriert seit: 02.05.2018
Version(en): Excel 365 & 2016
15.03.2019, 14:58
(Dieser Beitrag wurde zuletzt bearbeitet: 15.03.2019, 14:58 von MisterBurns.)
Na dann verweise ich nochmal auf meine Lösung von vorhin: Code: Range("A25").Formula = Replace(Range("A1").Formula, "P4-Q4", "$P$4-$Q$4") Range("A25").Formula = Replace(Range("A25").Formula, "I4", "$I$4")
Mach daraus Code: Range("A25").Formula = Replace(Range("A1").Formula, "(P", "($P$") 'usw.usw.
Kommst du damit klar?
Schöne Grüße Berni
|