Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
292to296
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
292to296
292to296
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Formel in VBA umsetzen - Aber wie ?

Formel in VBA umsetzen - Aber wie ?
15.08.2003 10:07:25
Lothar
Hallo liebes Forum!
Vor einiger Zeit hat mir Boris mit einer Formel geholfen, die allerdings - da komplex - auch ekelig lang und unübersichtlich ist.
Nach längerem Probieren habe ich es geschafft, die Formel so anzupassen, dass sie nach links oder unten kopierbar ist, und die Zellbezüge sich anpassen.
Nun habe ich das Problem, dass der Datenbereich auf die diese Formel zugreift, sich ab und zu ändert, d.h. es werden per VBA definitiv Zeilen gelöscht bzw. neue hinzugefügt. Wenn nun Zeilen gelöscht werden, stimmt der in der Formel definierte Bereich nicht mehr, da sich beim Löschen der Bezug in der Formel ändert.
Meine Idee ist es nun, die Formel - nach der Änderung/Aktualisierung des Datenbereiches per VBA in die betreffenden Zellen zu setzen.
Daher meine Frage: Gibt es eine (einfache) Methode eine Formel in VBA umzusetzen?
Und hier ist das "Monster":
=WENN(TEILERGEBNIS(4;$AG$13:$AG$2500)=0;SUMMENPRODUKT(($A$13:$A$2500=$A4)*($AG$13:$AG$2500=0);(I$13:I$2500));WENN(UND(TEILERGEBNIS(5;$AG$13:$AG$2500)=0;TEILERGEBNIS(4;$AG$13:$AG$2500)=1);SUMMENPRODUKT(($A$13:$A$2500=$A4)*(I$13:I$2500));SUMMENPRODUKT(($A$13:$A$2500=$A4)*($AG$13:$AG$2500=1);(I$13:I$2500))))
Gruss und danke schon mal ..
Lothar

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Formel in VBA umsetzen - Aber wie ?
15.08.2003 10:31:11
Rudi
Hallo Lothar,
habe vor einiger Zeit mal ein ähnliches Problem bei einer Darlehensberechnung gehabt. Meine Lösung sah so aus:
#########################

Sub BerechneDarlehen()
Dim Knoten_Zelle
' Vorhandene Zelleninhalte löschen
Range("A3").Select
Knoten_Zelle = ActiveCell.Address
ActiveCell.End(xlDown).Select
ActiveCell.End(xlToRight).Select
Range(Knoten_Zelle, ActiveCell).ClearContents
' Formeln zum Darlehensverlauf einfügen
Range("A3").Select
ActiveCell.FormulaR1C1 = "=EDATUM(Z(-1)S1;12)"
Range("B3").Select
ActiveCell.FormulaR1C1 = _
"=ZW(Zinsen/RatenProJahr;RUNDEN(TAGE360(Datum;ZS(-1))/30;0);Ratenbetrag;-Darlehen;Zinstermin)"
' Darlehensverlauf mit Funktion UntenAusfüllen einfügen
Selection.Resize(2, 2).Select                   ' Auswahl auf 2 x 2 Zellen erweitern
Do Until ActiveCell.Value <= 0
Selection.Offset(0, -1).FillDown            ' Auswahl 1 Spalte nach links versetzen
Selection.Offset(1, 0).Select               ' Auswahl 1 Zeile nach unten versetzen und neu auswählen
Loop
Selection.Resize(1, 1).Select                   ' Auswahl auf 1 Zelle verkleinern
Range("A1").Select
End Sub

####################################
Vielleicht hlft Dir das weiter.
Gruß, Rudi.

Anzeige
Formel in VBA umsetzen - wie ? noch offen!!!
15.08.2003 11:30:34
Lothar
Vielen Dank Rudi,
sehr nett, aber das ist es nicht.
Meine Frage nochmal ganz konkret: Gibt es eine Möglichkeit (ausser manueller Eingabe und Aufzeichnung mit MacroRecorder) eine Formel aus einer beliebigen Zelle in einen VBA Code umzuwandeln?
Beispiel:
(Zelle A2 Formel): =A1+10
Der Code im VBA hiesse dann: ActiveCell.FormulaR1C1 = "=RC[-1]+10"
Gruss
Lothar

AW: Formel in VBA umsetzen - wie ? noch offen!!!
15.08.2003 12:00:52
Rudi
Hallo Lothar,
vielleicht hilft mein Ansatz doch. Wenn ich Dich richtig verstehe, möchtest Du beim Einsetzen der Formeln in die Zellen sicherstellen, dass die variablen und festen Bezüge korrekt verwendet werden. Dies entspricht der manuellen Bearbeitung des "unten ausfüllen" oder "rechts ausfüllen". Genau dies macht mein Macro - nachdem die Formeln in die Ausgangszellen eingesetz sind - in diesem Loop:
Selection.Resize(2, 2).Select ' Auswahl auf 2 x 2 Zellen erweitern
Do Until ActiveCell.Value <= 0
Selection.Offset(0, -1).FillDown ' Auswahl 1 Spalte nach links versetzen
Selection.Offset(1, 0).Select ' Auswahl 1 Zeile nach unten versetzen und neu auswählen
Loop
Sorry, falls ich Dich doch falsch verstanden habe.
Gruß, Rudi.

Anzeige
Formel in VBA umsetzen? immer noch offen!!!
15.08.2003 14:11:21
Lothar
Rudi,
ich find das ja prima, dass Du mir helfen willst. Aber wirklich, das ist es leider nicht!
Es geht zwar ursächlich um das Problem des Datenbereiches in der Zelle, mich interessiert aber einfach die Möglichkeit aus einem Zelleninhalt =FormelXYZ den entsprechenden VBA-Befehl zu generieren, so wie in meinem 2. Posting in diesem Thread beschrieben:
(Zelle A2 Formel): =A1+10
Der Code im VBA hiesse dann: ActiveCell.FormulaR1C1 = "=RC[-1]+10"
Wie erzeuge ich ===> "=RC[-1]+10" aus =A1+10
Bei mir passiert nämlich folgendes:
(vereinfachtes Beispiel)
A1 = Summe(A2:A2500)
A2 bis A2500 enthält die Daten die summiert werden sollen. So weit - so gut!
Nun wird Datenbereich upgedatet: z.B. werden Zellen A100 bis A150 gelöscht.
Das ändert die Formel in A1 auf Summe(A2:A2449).
Werden anschliessend wieder neue Zellen zugefügt, bleibt die Formel so bestehen und ist damit falsch.
Ich brauche aber wirklich keinen workaround für dieses Problem! Nur die Frage von Formel zu VBA ist von Interesse!
Schönes Wochende
Lothar

Anzeige
AW: Formel in VBA umsetzen? immer noch offen!!!
15.08.2003 16:25:51
Rudi
Hallo Lothar,
wie schön man doch aneinander vorbeischreiben kann.
Wenn Zelle A1 die Zahl 5 enthält und Zelle B1 die Formel =A1+10,
und die aktive Zelle B2 ist, dann wird B2 mit dieser VBA-Zeile
ActiveCell.FormulaR1C1 = Range("A2").FormulaR1C1
die Formel "=B1+10" zugewiesen. Das ist aber so einfach, dass ich annehmen muss, Dich immer noch nicht richtig verstanden zu haben.
2. Möglichkeit:
Schreibe Deine Summe als Formel =Summe(A:A) in die Zelle B1 und Du kannst soviel Zeilen hinzufügen und löschen wie Du willst, die Summe wird immer korrekt sein.
Gruß, Rudi.
P.S.: Das größte Problem ist meist nicht die Suche nach der Lösung, sondern das Verstehen der Fragestellung.

Anzeige
AW: Formel in VBA umsetzen? DANKE ...
18.08.2003 12:16:16
Lothar
..Rudi, somit habe ich das Ergebnis!
Auf das einfachste kommt man manchmal nicht!
Und Du hast natürlich Recht, die Formulierung ist oft schwierig, weil man selbst genau weiss, was man will, es aber für einen Aussenstehenden schwierig ist das "zu erahnen" :)
Ich habe immer darüber nachgedacht, wie man diese Monsterformel in eine VBA-Syntax (das ist wohl der richtige Ausdruck?) umzuwandeln kann, um sie dann einfach nach der Aktulisierung des Datenbereiches in die ursprügliche Zelle zu schreiben. Nun habe ich komplett umgedacht:
Dieses Formelmonster kommt in gleiche Zelle in ein separates Blatt "Formel".
Nach Aktualisierung heisst es dann:
Sheets("Berechnung").Range("B1").FormulaR1C1 = Sheets("Formel").Range("B1").FormulaR1C1
Einfach genial und genial einfach :)
Ich meine (nur rein Interessenhalber) Zellenformel in VBA-Syntax ... gibt es soetwas überhaupt?
Ich danke Dir
Gruss
Lothar

Anzeige
AW: Formel in VBA umsetzen? DANKE ...
18.08.2003 13:11:54
Rudi
Hallo Lothar,
> Ich meine (nur rein Interessenhalber) Zellenformel in VBA-Syntax ... gibt es soetwas überhaupt?
meines Wissens nicht, aber ich weiss dass ich nichts weiss.
Weiterhin frohes Schaffen,
Rudi.

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige