Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1028to1032
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Cell.Formula verändern und zurückschreiben

Cell.Formula verändern und zurückschreiben
09.12.2008 15:21:00
Andreas
Hallo Herber Fans,
wie kann ich bei einer ausgelesenen SUM formula im Code den Bezug um eine Zeile verändern?
es wird ausgelesen: =SUM(L22:L22)
und soll dann als: =SUM(L22:L23)
wieder zurück in die Zelle geschrieben werden? Habe schon mit RIGHT und Stellen auslesen experimentiert. Aber erfolglos.
Dank und Gruß, Andreas Hanisch

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Cell.Formula verändern und zurückschreiben
09.12.2008 16:00:00
Luschi
Hallo Andreas,
so sollte es funktionieren:
Dim s1 As String, s2 As String, i1 As Integer, i2 As Integer, _
rg1 As Range, rg2 As Range
s1 = ActiveSheet.Range("K22").Formula
i1 = InStr(1, s1, "(", vbTextCompare)
i2 = InStr(1, s1, ")", vbTextCompare)
s2 = Mid(s1, i1 + 1, i2 - i1 - 1)
s1 = ActiveSheet.Range(s2).Resize(2, 1).Address(False, False)
ActiveSheet.Range("K23").Formula = "=SUM(" & s1 & ")"
Gruß von Luschi
aus klein-Paris
AW: Cell.Formula verändern und zurückschreiben
09.12.2008 16:46:00
Andreas
Hi Luschi,
danke für den Code. Das ist ja ein wenig komplexer, als ich so dachte. Es läuft noch nicht ganz. Ich glaube aber, ich hatte es falsch beschrieben.
Ich lese s2:M25:M25 und benötige dann s1:M24:M25, der Code gibt aber bisher aus: s1:M25:M26.
Ich bin schon am probieren, welcher Parameter verändert werden muß, um es M24:M25 zu bekommen.
Wenn ich an i1 oder i2 rumstellen, bekomme ich den Fehler 1004. Resize akzeptiert aber leider keine negativen Werte für die Row- Angabe.
Wo muß ich adjustieren, um alles "eins nach oben zu rücken".
Dank und Gruß, Andreas
Anzeige
AW: Cell.Formula verändern und zurückschreiben
09.12.2008 16:59:33
Erich
Hi Andreas,
probier mal

Sub FormelAend()
Dim arrT
With ActiveSheet.Range("K22")
arrT = Split(.Formula, ":")
.Formula = "'" & arrT(0) & ":" & _
Left(arrT(1), 1) & Mid(arrT(1), 2, Len(arrT(1)) - 2) + 1 & ")"
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Cell.Formula verändern und zurückschreiben
09.12.2008 17:12:37
Andreas
Hallo Erich,
Dein Code funktioniert sehr gut, aber ich hatte es falsch gepostet. Die Zelle, aus der die Ursprungsformel gezogen wird, bleibt gleich, aber das Ergebnis muß alles "eins nach oben rutschen". Daran bastele ich gerade, aber so weit habe ich Deinen Code dann doch noch nicht verstanden. Die erste Kompontente der Range Angabe muß -1 verändert werden.
Wie muß die Komponenten dafür aussehen?
Dank und Gruß, Andreas
Anzeige
AW: Cell.Formula verändern
09.12.2008 17:19:12
Erich
Hi Andreas,
heißt "eins nach oben rutschen", dass die neue Formel in K21 stehen soll?
Dann so:

.Offset(-1).Formula = arrT(0) & ":" & _
Left(arrT(1), 1) & Mid(arrT(1), 2, Len(arrT(1)) - 2) + 1 & ")"

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Cell.Formula verändern
09.12.2008 17:24:00
Andreas
Hallo Erich,
nein die Formel bleibt in Zelle 22, aber der Bezug sollte von 22:22 auf 21:22 wechseln. Dezeit (ich habe es auch falsch gepostet) geht der Bezug von 22:23.
Es sind auch nicht immer zweistellige Zahlen, die Zeilennummern erreichen durchaus 4 stellige Ziffernwerte.
Gruß, Andreas
Anzeige
AW: Cell.Formula verändern
09.12.2008 18:34:52
Erich
Hi Andreas,
dann probier mal das:

Sub FormelAend2()
Dim arrT, arrS
With ActiveSheet.Range("K22")
arrT = Split(.Formula, "(")
arrS = Split(Mid(arrT(1), 2), ":")
.Formula = arrT(0) & "(" & Left(arrT(1), 1) & arrS(0) - 1 & ":" & arrS(1)
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Cell.Formula verändern
09.12.2008 18:49:10
Andreas
Hallo Erich,
Danke für Deine Antwort. Der Code läuft. Aber (mühsam ernährt sich das Eichhörnchen...) wenn eine Formula verarbeitet werden muß, die schon einen doppel- Spaltenbuchstaben hat (AA), dann kommt der Debugger mit einer Typen- Unverträglichkeit.
Wäre es nicht möglich, die Formula bis zum ":" zu splitten und im ersten Teil über VBA die Ziffer auszulesen, diese in diesem Teilstück durch (Ziffer - 1) zu ersetzen und dann die Teilstücke wieder zusammenfügen?
Das ist leichter gesagt als getan, denn ich versuche mich gerade daran, aber bisher noch ohne Erfolg.
Es ist doch kurios, daß dies so kompliziert ist einen SummenRange aufzubohren?
Gruß, Andreas
Anzeige
AW: Cell.Formula verändern
09.12.2008 19:24:00
Erich
Hi Andreas,
noch komplizierter ist wohl die Formulierung der Aufgabe...
Probier dann mal

Sub FormelAend3()
Dim arrT, arrS, intP As Integer
With ActiveSheet.Range("K22")
arrT = Split(.Formula, "(")
arrS = Split(arrT(1), ":")
For intP = 2 To 3
If IsNumeric(Mid(arrS(0), intP + 1, 1)) Then Exit For
Next intP
.Formula = arrT(0) & "(" & Left(arrS(0), intP) & _
Mid(arrS(0), intP + 1) - 1 & ":" & arrS(1)
End With
End Sub

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Cell.Formula verändern
10.12.2008 09:23:00
Andreas
Hallo Erich,
stimmt, bei der Formulierung hatte ich so meine Probleme. Entschuldige bitte. Deine letzte Code Version funktioniert perfekt! Alle möglichen Spaltenbuchstaben/ Zeilennummern Kombinationen in der Sum Formula werden sicher angepaßt!
Vielen Dank für Deinen Einsatz. Habe heute einen schönen Tag.
Grüße aus Berlin, Andreas
Anzeige
AW: Cell.Formula verändern und zurückschreiben
09.12.2008 17:06:00
Erich
Hi Andreas,
zum Testen hatte ich vor die Formel ein Hochkomma geschrieben - und dann vergessen, das wieder rauszunehmen.
Hier die beiden Zeilen richtig:

.Formula = arrT(0) & ":" & _
Left(arrT(1), 1) & Mid(arrT(1), 2, Len(arrT(1)) - 2) + 1 & ")"

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

301 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige