Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Suchen und Ersetzen in Formeln

VBA Suchen und Ersetzen in Formeln
16.03.2009 13:29:32
Micha
Hallo liebe Spezis,
mit dem Makrorecorder habe ich folgenden Code zum "Suchen und Ersetzen" ermittelt:

Sub Makro5()
Columns("V:V").Select
Selection.Replace What:="Runden((", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=")/100;0)*100", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub


Doch leider funktioniert das nicht in Formeln, was habe ich falsch gemacht?
Wie sieht der korrekte Code aus?
Freue mich riesig auf Eure Hilfe
Gruß
Micha

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 14:02:29
mpb
Hallo Micha,
für die Ersten 10 Zellen in Spalte V:

Sub Runden_weg()
For i = 1 To 10
Cells(i, 8).Formula = "=" & Mid(Cells(i, 8).Formula, 9, Len(Cells(i, 8).Formula) - 20)
Next i
End Sub


Gruß
Martin

AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 14:16:59
Jogy
Hi.
Super Idee, vor allem wenn da irgendwas anderes in diesen Zellen steht.
1. In VBA wird Englisch gesprochen, ist also "Round" und aus dem Semikolon wird eine Komma.
2. Wenn eine ungültige Formel herauskommt, dann macht es die Ersetzung nicht.
Gruss, Jogy
Anzeige
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 14:20:23
Micha
Hallo
der Code funktioniert leider nicht :-(
Hoffentlich findet jemand eine Lösung?
Danke
Micha
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 14:30:35
robert
hi,
hatte mal das problem..
schau in diesm beitrag nach
gruß
robert
Punkt vor Formel weg......ersetzen?
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 15:14:44
Micha
Krieg ich alleine nicht hin.
Ich scheiter hier ganz klar Mangels VBA Wissen :-(
Gruß
Micha
Anzeige
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 15:26:58
robert
hi,
wie lauten die formeln und was willst du eigentlich ersetzen?
wenn geht-datei hochladen
gruß
robert
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 15:38:23
Micha
Die Formeln sind relativ einfach:
=RUNDEN((R11*R16*R19*S19*R22*R25)/100;0)*100
Ich müsste immer das Runden( und /100;0)*100 gelöscht haben.
So das in der Formel eben nicht mehr gerundet wird.
Ich dachte das ich das mit Suchen und ersetzten "" lösen kann?
Ich bin gleich leider in einem Termin, und erst heute Abend spät wieder online.
Würde mich auf eine Überraschung freuen :-)
Gruß
Micha
Anzeige
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 15:46:26
mpb
Hallo Micha,
ich sehe gerade, dass ich in meinem ersten Posting die Spaltenreferenzierung nicht angepasst hatte. Genau dass, was Du jetzt beschrieben hast, macht folgendes Makto für die Zeilen 1 bis 10 in Spalte V (die Zeilen, die bearbeitet werden sollen, kannst Du in der "For"-Zeile anpassen):

Sub Runden_weg()
For i = 1 To 10
Cells(i, 22).Formula = "=" & Mid(Cells(i, 22).Formula, 9, Len(Cells(i, 22).Formula) - 20)
Next i
End Sub


Gruß
Martin

Anzeige
AW: VBA Suchen und Ersetzen in Formeln
16.03.2009 17:39:23
robert
hi,
probier das mal, ist auf spalte V zugeschnitten
und funkt nur, wenn deine formeln so wie im beispiel aussehen
gruß
robert

Sub Runden_weg()
Dim i%
Dim lz%
Application.ScreenUpdating = False
lz = Cells(Rows.Count, 22).End(xlUp).Row
For i = 1 To lz
Cells(i, 22).FormulaLocal = "'" & Cells(i, 22).Formula
Cells(i, 22).Formula = "'" & Left(Cells(i, 22), Len(Cells(i, 22)) - 11)
Cells(i, 22) = Right(Cells(i, 22), Len(Cells(i, 22)) - 7)
Cells(i, 22) = "=" & Cells(i, 22)
Next i
Application.ScreenUpdating = True
End Sub


Anzeige
AW: VBA Suchen und Ersetzen in Formeln
17.03.2009 07:55:43
Micha
Hm, klappt leider auch nicht :-)
Mal eine anderer Ansatz, der vieleicht deutlich macht was ich möchte:
Ich habe hier im Forum den folgenden Code bekommen:

Private Sub CommandButton1_Click()
Static bRounded As Boolean
Dim rC As Range
If bRounded Then
CommandButton1.Caption = "Gerundet!"
bRounded = False
For Each rC In Range("V:V").SpecialCells(xlCellTypeFormulas)
If Abs(rC.Value) >= 1000 Then
rC.Formula = Replace(Left(rC.Formula, _
Len(rC.Formula) - 12), "=ROUND((", "=")
End If
Next rC
Else
CommandButton1.Caption = "Exakte LL"
bRounded = True
For Each rC In Range("V:V").SpecialCells(xlCellTypeFormulas)
If Abs(rC.Value) >= 1000 Then
rC.Formula = "=ROUND((" & Right(rC.Formula, _
Len(rC.Formula) - 1) & _
")/100,0)*100"
End If
Next rC
End If
End Sub


Mit dem CommandButton kann ich somit die Ergebnisse in Spalte "V"runden oder wieder ungerundet darstellen.
Das funktioniert soweit bestens.
Ich muss alledings sicherstellen das beim schließen der Datei die Ergebnisse unbedingt wieder ungerundet angezeigt werden.
Sub Workbook_BeforeClose.......dann hören meine VBA Kenntnisse schon auf :-(
Hoffentlich nerve ich Euch nicht so sehr mit meinem Problem,
würde mich riesig freuen wenn ich weiter Hilfe bekomme.
Danke
Micha

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

VBA Suchen und Ersetzen in Formeln


Schritt-für-Schritt-Anleitung

Um in Excel mit VBA Suchen und Ersetzen in Formeln durchzuführen, kannst du folgendes Makro verwenden. Dieses Beispiel entfernt spezifische Teile einer Formel in Spalte V:

Sub Runden_weg()
Dim i As Long
Dim lz As Long
Application.ScreenUpdating = False
lz = Cells(Rows.Count, 22).End(xlUp).Row
For i = 1 To lz
    Cells(i, 22).FormulaLocal = "'" & Cells(i, 22).Formula
    Cells(i, 22).Formula = "'" & Left(Cells(i, 22), Len(Cells(i, 22)) - 11)
    Cells(i, 22) = Right(Cells(i, 22), Len(Cells(i, 22)) - 7)
    Cells(i, 22) = "=" & Cells(i, 22)
Next i
Application.ScreenUpdating = True
End Sub
  1. Öffne den VBA-Editor mit ALT + F11.
  2. Füge ein neues Modul hinzu und kopiere den obigen Code hinein.
  3. Schließe den VBA-Editor und führe das Makro aus.

Häufige Fehler und Lösungen

  • Problem: Das Makro funktioniert nicht in Formeln.

    • Lösung: Stelle sicher, dass die Formeln das richtige Format haben. Du musst RUNDEN durch ROUND ersetzen und die Semikola durch Kommas ersetzen, wenn du die englische Version von Excel verwendest.
  • Problem: Ungültige Formeln nach dem Ersetzen.

    • Lösung: Überprüfe die Logik des Codes, insbesondere die Len-Funktion und die Position, von der du Text entfernst.

Alternative Methoden

Ein weiterer Ansatz ist, die Excel-Funktion Suchen und Ersetzen manuell zu nutzen. Du kannst auch ein VBA-Skript verwenden, das auf Find und Replace basiert:

Sub Suchen_Ersetzen()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("DeinBlattName")

    With ws.Cells
        .Replace What:="Runden((", Replacement:="", LookAt:=xlPart
        .Replace What:=")/100;0)*100", Replacement:="", LookAt:=xlPart
    End With
End Sub

Praktische Beispiele

Hier sind einige praktische Beispiele, die zeigen, wie du das Suchen und Ersetzen in Formeln anpassen kannst:

  1. Einfaches Ersetzen in den ersten 10 Zellen:

    Sub Beispiel_Ersetzen()
       Dim i As Integer
       For i = 1 To 10
           Cells(i, 22).Formula = Replace(Cells(i, 22).Formula, "RUNDEN((", "=")
           Cells(i, 22).Formula = Replace(Cells(i, 22).Formula, ")/100;0)*100", "")
       Next i
    End Sub
  2. Ersetzen in einer gesamten Spalte:

    Sub SpalteErsatz()
       Dim rC As Range
       For Each rC In Range("V:V").SpecialCells(xlCellTypeFormulas)
           rC.Formula = Replace(rC.Formula, "RUNDEN((", "=")
           rC.Formula = Replace(rC.Formula, ")/100;0)*100", "")
       Next rC
    End Sub

Tipps für Profis

  • Nutze Application.ScreenUpdating = False, um die Bildschirmaktualisierung während der Ausführung des Makros zu deaktivieren. Dies verbessert die Leistung erheblich.
  • Speichere deine Arbeit häufig, bevor du Makros ausführst, um Datenverlust zu vermeiden.
  • Teste deine Makros zunächst in einer Kopie deiner Datei.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Ersetzungen nur in Formeln stattfinden? Du kannst den Bereich mit SpecialCells(xlCellTypeFormulas) einschränken, um nur Zellen mit Formeln zu bearbeiten.

2. Was sollte ich tun, wenn ich viele verschiedene Ersetzungen vornehmen möchte? Erstelle eine Liste der Ersetzungen und iteriere durch diese Liste in deinem VBA-Code, um die Lesbarkeit und Wartbarkeit zu erhöhen.

3. Kann ich das Makro für andere Spalten verwenden? Ja, du musst lediglich die Spaltenreferenz im Code anpassen, um die gewünschte Spalte zu bearbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige