Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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

Wenn-Formle funktioniert nach Makro ...

Wenn-Formle funktioniert nach Makro ...
09.06.2014 14:48:34
Matthias Sauter

Ich habe mir eine Exceltabelle erstellt.
In die wird zuerst die Daten einer CSV-Datei eingelesen. Das Tut.
In einem weiteren Schritt werden die Zahlungspflichtigen/-empfänger auf eine gleiche Schreibweise gebracht. Das Tut.
Nun will ich den Verwendungszweck automatisch, weitgehenst bereinigen.
Dazu habe ich folgende Formel gemacht:
=WENN(NICHT(ISTFEHLER(SUCHEN(";";F6)));RECHTS(F6;LÄNGE(F6)-FINDEN(";";F6)); WENN(D6="DE12600501010002691008";VERKETTEN(TEXT(A6;"MMMM");" ";"AB5380885 B27863919"); WENN(C6="DT. KOMITEE FUER UNICEF";VERKETTEN("Spende";" ";(TEXT(A6;"MMMM")));WENN(E6=60090800; "Barabhebung";WENN(D6=9422080;"Einzahlung";WENN(NICHT(ISTFEHLER(SUCHEN("EUR";F6)));LINKS(F6; FINDEN(" EUR";F6));F6))))))
Diese funktioniert bei jeder Zeile in die ich nachher kopiere.
Ich habe nun das ganze als Makro aufgezeichnet.
Das Ergebnis:
Columns("F:F").Select
Selection.Replace What:="398175", Replacement:="398175;", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Range("G8").Select
ActiveCell.FormulaR1C1 = _
"=IF(NOT(ISERROR(SEARCH("";"",RC[-1]))),RIGHT(RC[-1],LEN(RC[-1])-FIND("";"",RC[-1])),IF(RC[-3]=""DE12600501010002691008"",CONCATENATE(TEXT(RC[-6],""MMMM""),"" "",""AB5380885 B27863919""),IF(RC[-4]=""Unicef"",CONCATENATE(""Spende"","" "",(TEXT(RC[-6],""MMMM""))),IF(RC[-2]="60090800",""Barabhebung"",IF(RC[-3]="9422080",""Einzahlung"",IF(NOT(ISERROR(SEARCH(""EUR"",RC[-1])))" & _
"[-1],FIND("" EUR"",RC[-1])),RC[-1]))))))"
Range("G8").Select
Selection.AutoFill Destination:=Range("G8:G207"), Type:=xlFillDefault
Range("G8:G207").Select
Selection.Cut
Application.CutCopyMode = False
Selection.Copy
Application.CutCopyMode = False
Selection.Cut
Range("G7").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Verwendungszweck"
Columns("G:G").Select
Selection.Copy
Columns("F:F").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("G:G").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("G7").Select
ActiveCell.FormulaR1C1 = "Kategorie"
Range("G8").Select
End Sub
Nun macht er bei der Formel ActiveCell.FormulaR1C1 dann einen Debuggenfehler.
Woran liegt das?
Oder müsste ich das ganze eh in VBA lösen?
Danke schon mal für eure hilfe

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Wenn-Formle funktioniert nach Makro ...
09.06.2014 15:31:10
Hajo_Zi
Du trägst kein Formel ein. Lösche .FormulaR1C1

Vergiss Hajos AW, denn du hast 3x ...
09.06.2014 16:51:35
Luc:-?
ActiveCell.FormulaR1C1 = in deiner Aufzeichnung, Matthias;
auf die beiden letzten Male soll sich wohl seine Bemerkung beziehen, aber das ist wurscht!
Ursache wird sein, dass in der Fml etwas fehlt, aber die Darstellung hier ist schlecht. Setze das Pgm in HTML-<pre>-Tags (Button Code!) und achte darauf, dass die Forumssoftware keine Trennstriche (_) einfügt. Füge sie bei Bedarf selber ein, indem du den langen FmlText an passender Stelle mit " & _[ENTER]" ([ENTER]⇒Enter-Taste) unterbrichst. Das scheinst du zwar 1× gemacht zu haben, aber ggf zu spät und dabei ist auch noch (auf den 1.Blick) LEFT(RC verlorengegangen. Allerdings dürfte das zu keinem SyntaxFehler führen, auf den der Debugger anspringen sollte. Also bitte mal etwas genauer einkreisen.
Gruß Luc :-?

Anzeige
AW: Wenn-Formle funktioniert nach Makro ...
09.06.2014 22:03:51
Daniel
HI
prinzipell müsste es funktionieren.
Auch die Textlängen sind noch i.O. und im Rahmen des erlaubten.
du benötigst eigentlich auch keine Zeilenumbrüche mit Unterstrich.
folgende Fehler hast du beim erstellen der Formel gemacht:
1. im letzten Teil fehlt, wie schon von Luc bemerkt, der Text: ,LEFT(RC
2. die Kontonummern sind in deiner urspünglichen Formel Zahlen, die nicht in Anführungszeichen stehen.
im Makro setzt du plötzlich in Anführungsstriche, das aber nur einfach. Da die Anführungzeichen zum Code gehören, müssten sie wie die anderen auch gedoppelt werden.
3. der Text bei Unicef stimmt nicht überein (das sollte aber keinen Fehler verursachen.
so läuft der Code bei mir, die bei dir fehlerhaften Stellen sind fett:
ActiveCell.FormulaR1C1 = "=IF(NOT(ISERROR(SEARCH("";"",RC[-1]))),RIGHT(RC[-1],LEN(RC[-1])-FIND("";"",RC[-1])),IF(RC[-3]=""DE12600501010002691008"",CONCATENATE(TEXT(RC[-6],""MMMM""),"" "",""AB5380885 B27863919""),IF(RC[-4]=""DT. KOMITEE FUER UNICEF"",CONCATENATE(""Spende"","" "",(TEXT(RC[-6],""MMMM""))),IF(RC[-2]=60090800, ""Barabhebung"",IF(RC[-3]=9422080,""Einzahlung"",IF(NOT(ISERROR(SEARCH(""EUR"",RC[-1]))),LEFT(RC[-1],FIND("" EUR"",RC[-1])),RC[-1]))))))"
kleiner Tip noch:
wenn ich komplexe Formeln per VBA schreiben will, dann schreibe ich sie erstmal von Hand direkt in die Zelle. Wenn sie dann funktionieren, lasse ich mir den Formeltext gleich mit gedoppelten Anführungszeichen im Direktfenster anzeigen mit folgendem Befehl und kann ihn dann von dort mit Copy-Paste in den Code übertragen:
?Replace(selection.formular1c1, """", """""")
Gruß Daniel

Anzeige
AW: Wenn-Formle funktioniert nach Makro ...
10.06.2014 17:44:02
Matthias Sauter
Hallo,
Danke für die Antworten.
Werde es nächsten Sonntag versuchen.
Das "ActiveCell.FormulaR1C1" hat er bei Makro "aufzeichnen" eingefügt.
Zuerst hatte ich auch die Zahlen ohne "". War nur der Versuch ob es
dann geht. Das Unicef ist richtig. Habe die Namen vorher mal mit einem
anderen Makro angepasst, damit nicht alles wie Kraut und Rüben aussieht.
Wenn das alles so läuft wie ich will, dann habe ich meine FiBu gut gemacht.
Vielleicht könnte man es auch einfacher haben. Aber für den Anfang.

AW: Wenn-Formle funktioniert nach Makro ...
10.06.2014 18:00:03
Matthias Sauter
Hallo, Danke mal vorerst. Werde am Sonntag wieder drangehen.

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige