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

Ersetzen in Formeln - Spezial - per Makro

Ersetzen in Formeln - Spezial - per Makro
Peter
Hallo liebe Freunde,
bei Bezügen zwischen verschiedenen Dateien schleppt Excel leider alle möglichen Anpassungen (wie z. B. den Pfadnamen) mit. Will man das Blatt der MappeA in die MappeB überstellen, dann stimmen leider die Formeln nicht mehr, wenn die MappeA zuvor in Beziehung mit der MappeC stand, die sich in einem ganz anderen Pfad befand. Mit dem Zeichen '#' als Vorsatz vor eine Formel kann man diese als Text festhalten und das Mitschleppen von Pfaden wird dadurch ausgeschlossen. Manuell kann ich die Zeichenfolge '#=' durch 'Ersetzen' in eine Formel zurückverwandeln; mit einem aufgezeichneten Makro geht dies leider nicht. Hat jemand von Euch eine Lösung? Auch bei einfachen Formeln funktioniert das Makro nicht. Hier ein kleines Beispiel:
A4-A6 B4-B6
2 . . . . . 12 #=WENN(A4>1;A4*B4;0)
3 . . . . . 20 #=WENN(A5>1;A5*B5;0)
4 . . . . . 25 #=WENN(A6>1;A6*B6;0)
Das aufgezeichnete Makro:
Sub Makro1()
' Makro1 Makro
Range("D4:D6").Select
Selection.Replace What:="#=", Replacement:="=", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub

Vielen Dank im Voraus für Eure Hilfe.
Peter Kloßek

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

Betreff
Benutzer
Anzeige
Funktioniert einwandfrei - Was passiert bei Dir ?
13.12.2011 17:31:38
NoNet
Hallo Peter,
diese Anweisung funktioniert in meinem Beispiel (Excel 2003) einwandfrei :
Cells.Replace What:="#=", Replacement:="=", LookAt:=xlPart
Was passiert bei Dir ?
Gruß, NoNet
AW: Funktioniert einwandfrei - Was passiert bei Dir ?
13.12.2011 18:20:22
Peter
Lieber NoNet,
ich habe Deine Anweisung (als einzige Zeile zwischen '

Sub Makro1()' und 'End Sub
') ausprobiert. Es funktioniert bei mir leider weder auf Excel2007 noch auf Excel2003. Noch ein Hinweis: vor dem '#' ist kein Apostroph (') eingegeben. Trotzdem vielen Dank für Deine Bemühungen.
M.f.G. Kloßek
Sprachenproblem
17.12.2011 08:52:37
Erich
Hi Peter,
dieses Replace - bei dem eine Formel herauskommen soll - funktioniert nur dann, wenn Excel das Ergebnis
als in der VBA-Sprache korrekte Formel bekommt. VBA spricht englisch - und da darf z. B. "IF" vorkommen,
"WENN" aber nicht. Und in englischen Formeln steht statt des (deutschen) Semikolons ein Komma.
Wenn in der Zelle statt
#=WENN(A4=7;A4*B4;0)
der Text
#=IF(A4=7,A4*B4,0)
steht, geht es mit dem Replace.
Wenn es bei deutschen Formeln mit Replace nicht geht, wie dann?
Dafür gibt es Cells(2,3).Formula oder .FormulaLocal oder FormulaR1C1 oder .FormulaR1C1Local
Die beiden "Local"-Varianten verstehen deutsch.
Frage: Wie kamen die Lattenzäune vor die Formel - wie wurde die Formel zu Text? Per Makro?
Noch ein Link zum Problem: http://www.office-loesung.de/ftopic369950_0_0_asc.php
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Sprachenproblem
17.12.2011 09:38:01
Peter
Hallo lieber Erich,
vielen Dank für Deine Nachricht. Ich werde es mal ausprobieren und gebe dann nocheinmal Bescheid.
Eigentlich geht es doch hierbei nur um die Ersetzung von Zeichen. Andere Ersetzungen in deutschen Formeln sind ohne weiteres möglich, soweit es sich nicht um obige Besonderheiten handelt.
Mit herzlichen Grüßen aus Goldbach (Ufr.)
Peter Kloßek
AW: Sprachenproblem
19.12.2011 08:55:19
Peter
Hallo lieber Erich,
ich hatte mich gestern ausgiebig mit dem Problem befasst und nach ca. 6 Stunden eine Lösung für meine Belange erarbeitet. Das Excel-Programm in Verbindung mit VBA verhält sich mitunter recht merkwürdig. Mit Deiner Lösung werden zwar einfache kleine Formeln - so wie in meinem Beispiel gebracht - ordentlich mit "Replace" geändert. Dies funktioniert jedoch bei großen, langen Formeln nicht. Es wird zwar geändert, aber die Formeln werden dann nicht aktiviert und es erscheint die Fehlermeldung "#Name?". Die mit "Replace" be- handelten Formeln müssen daher nachbehandelt werden: ich habe das mit 'SendKeys "{F2}{ENTER}" gemacht, was aber nicht ausreichend war, weil Excel/VBA bei "SendKeys" Zeit benötigt, die Eingaben zu senden. Jede Änderung musste zunächst einmal Zelle für Zelle erfolgen und nach jeder Änderung musste eine Wartezeit eingerichtet werden. Mit einem "Wait"-Befehl kam ich leider auch nicht weiter. Es funktionierte nur, als ich eine Wartezeit mit Verweis auf einen Anschlussmakro einführte. Meine etwa 20 Formeln habe ich auf die englische Schreibweise umgebaut (IF und VLOOKUP). Nach 6 Stunden hatte ich es endlich geschafft, dank Deiner freundlichen Hilfe. Es ist nicht das erste Mal, dass ich Hilfe aus Kamp-Lintfort bekomme und daher möchte ich mich mit einem kleinen Geschenk bedanken, habe jedoch keine Anschrift. Schreibe sie mal bitte an meine E-Mail-Adresse 'peter.klossek@online.de' und lasse Dich überraschen!
Herzliche Grüße
Peter Kloßek
Anzeige
Kein Sprachenproblem mit FiormulaLocal
19.12.2011 10:46:46
Erich
Hi Peter,
ich vermute stark, dass du dir da jetzt unnötig viel Arbeit gemacht hast.
Meine Andeutung: Wenn Replace nicht geht - dann mit FormulaLocal" war sicher zu unklar.
Schau dir mal diesen Code (laufen lassen auf einem leeren Blatt) an:

Sub aaaa()
Cells(1, 1).Value = "#=WENN(A4>1;A4*B4;SVERWEIS(E5;F2:G9;2;0))"
Cells(3, 1).FormulaLocal = Mid(Cells(1, 1), 2)
Cells(4, 1).FormulaLocal = Replace(Cells(1, 1).Value, "#=", "=")
End Sub
Da wird eine "#-gesicherte" Formel in A1 geschrieben und dann in A3 und A4 als Formel reaktiviert.
Statt in A3 oder A4 kannst du die Formel natürlich auch in A1 schreiben lassen - das entspräche dann einem Replace.
Geschenke müssen hier IMHO gar nicht sein. Hier treffen sich Leute, die Hilfe oder Tipps brauchen und bekommen,
mit Leuten, die ein gutes Gefühl bekommen, wenn sie Hilfe geben können (und dabei zeigen, wie toll sie das können... ;-)).
Und manchmal vertauschen sich diese Rollen auch noch. Wir sind eben ein Forum.
Rückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
Anzeige
AW: Kein Sprachenproblem mit FiormulaLocal
19.12.2011 13:26:04
Peter
Hallo Erich,
schönen Dank für Deine schnelle Antwort. In meinem Beispiel hatte ich nur "kleine" Formeln angeführt, weil ich dachte, wenn die richtig geändert werden, kann man mit denselben Anweisungen auch "große, lange" Formeln auf dieselbe Art ändern. Dies war jedoch nicht der Fall. Die Formeln selbst wurden zwar richtig abgeändert, jedoch nicht aktiviert (s. o.). Ich habe das Problem nun (wie o. beschrieben) gelöst und der Fall ist damit erledigt.
Wünsche frohe Feiertage und einen guten Rutsch!
Peter Kloßek

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige