Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Bestimmte Zeichen in Zelle entfernen

Bestimmte Zeichen in Zelle entfernen
Hugo
Hallo
Möchte in einer Zelle, jeden zweiten Bindestrich vor dem $ Zeichen löschen (-$)
begingend ab dem ersten $ Zeichen
ZB: für die besser übersicht habe ich die zu löschenden - nicht gelöscht sondern mit ** ersetzt
Text vorher:
aaaaaaaaa $bbbbbbbb-bb-$ccccccccc-cc-$dddddddd$eeeeeeee$fffffffff$gggggggg-gg-$ hhhh$ etc
Text vorher:
aaaaaaaaa $bbbbbbbb-bb-$ccccccccc-cc**$dddddddd$eeeeeeee$fffffffff$gggggggg-gg**$ hhhh$ etc
Folgender Code fängt beim ersten Gefunden -$ an
Was muss ich anpassen, damit ab dem ersten $ gestartet wird und dann jedes zweite $ Zeichen geprüft wird und gegebenfalss den Bindestrich enfertnt?
Sub test()
Dim i As Long
Range("B1").Select
For x = 0 To Cells(Rows.Count, 2).End(xlUp).Row
If Right(ActiveCell.Offset(x, 0 - 1), 1) = "0" Then
Anzahl = Len(ActiveCell.Offset(x, 0)) - Len(Replace(ActiveCell.Offset(x, 0), "-$", ""))
For i = 1 To Anzahl
ActiveCell.Offset(x, 0).Formula = _
WorksheetFunction.Substitute(ActiveCell.Offset(x, 0).Formula, "-$", "**$", i)
Next
End If
Next
End Sub
Besten Dank und Gruss
Hugo
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
07.02.2011 13:02:32
Oberschlumpf
Hi Hugo
Deine Frage lautet:
Möchte in einer Zelle, jeden zweiten Bindestrich vor dem $ Zeichen löschen
Deine Idee sieht so aus:
---------------------------------1----------------2-------------------------------------------------------1----------
aaaaaaaaa $bbbbbbbb-bb-$ccccccccc-cc-$dddddddd$eeeeeeee$fffffffff$gggggggg-gg-$ hhhh$
---------------------------------1----------------2 --------------------------------------------------------1 -----------
aaaaaaaaa $bbbbbbbb-bb-$ccccccccc-cc**$dddddddd$eeeeeeee$fffffffff$gggggggg-gg**$ hhhh$
1 = 1. Bindestrich vor $-Zeichen
2 = 2. Bindestrich vor $-Zeichen
Bedeutet also, dass immer nur jeder zweite Bindestrich vor einem $-Zeichen gelöscht werden soll.
Du hast in deinem Bsp aber jeden Bindestrich - außer dem ersten - gelöscht, und nicht, wie du wolltest, nur jeden zweiten Bindestrich.
Zumindest ich verstehe so nicht, was du erreichen möchtest.
Ciao
Thorsten
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
07.02.2011 13:13:58
Hugo
Hallo Thorsten
Wenn beim 1. $-Zeichen ein - vorhanden ist dann löschen
dann das 3. $-Zeichen prüfen ob vorhanden und wenn ja dann löschen nun im5. 7. etc
Also, eigentlich bei den "ungeraden" $-Zeichen prüfen/ersetzen.
Hoffe es ist jetzt etwas kare was ich meine
Besten Dank für deine Hilfe und Gruss
Hugo
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
07.02.2011 13:22:47
Oberschlumpf
Hi Hugo
ähh...nee...klarer is es noch immer nich...
Jetzt möchtest du das 1. , 3. , 5. , 7. , usw Zeichen gelöscht haben.
Aber in deinem ersten Bsp hast du mit dem Löschen erst beim 2. Zeichen - und nicht beim 1. - begonnen.
Wie nun?
Am besten wäre es, wenn du uns das, was du möchtest, in einer Bsp-Datei zeigst.
So, wie es aussieht und so wie es aussehen soll.
Ciao
Thorsten
PS
überprüfe bitte vorm Absenden deine Texte auf Tippfehler
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
07.02.2011 16:16:35
Gerd
Hallo Hugo!
Sub Start()
Dim lngCt As Long
For lngCt = 1 To Cells(Rows.Count, 2).End(xlUp).Row
Cells(lngCt, 2) = Schlumpf_Out(Cells(lngCt, 2).Value)
Next
End Sub

Function Schlumpf_Out(strText As String) As String
Dim i As Integer, blnChange As Boolean
For i = 2 To Len(strText)
If Mid$(strText, i - 1, 2) = "-$" Then
blnChange = Not blnChange
If blnChange Then Mid$(strText, i - 1, 1) = "|"
End If
Next
Schlumpf_Out = Replace(strText, "|", "")
End Function
Gruß Gerd
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
08.02.2011 09:26:22
Hugo
Hallo Gerd
Danke für deinen Code
Leider ist es nicht ganz so wie ich es gerne hätte.
Dein Code löscht ab dem ersten $-Zeichen, das einen Bindestrich enthält und dann jedes Zweite.
Der Code soll aber ab dem ersten $ Zeichen (egal ob Bindestrich oder nicht) jedes zweite $-Zeichen prüfen ob ein Bindestrich vorhanden ist und dann denn Bindestrich löschen.
1. $-Zeichen im Textblock prüfen und Bindestrich ggf löschen
dann zum
3. $-Zeichen im Textblock prüfen und Bindestrich ggf löschen
dann zum
5. $-Zeichen im Textblock prüfen und Bindestrich ggf löschen
etc
Die Bindestriche bei den geraden $-Zeichen 2 4 6 etc müssen stehen bleiben.
Ich hoffe du kannst mir weiterhelfen
Besten Dank und Gruss
Hugo
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
08.02.2011 09:29:03
Oberschlumpf
Hi Hugo
Da ja nun auch Gerd dich noch nicht ganz verstanden hat, wieso zeigst du uns das, was du möchtest, nicht in einer Bsp-Datei?
Ciao
Thorsten
AW: Bestimmte Zeichen in Zelle entfernen
09.02.2011 00:08:50
Gerd
Hallo Hugo,
aha! Die Aufgabenbeschreibung "wächst" mit den angebotenen Lösungen.
Kein Problem, das fördert die Kommunikation. :-)
Gruß Gerd
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
09.02.2011 21:23:10
Hugo
Hallo
Besten Dank für die Hilfe. Sorry, dass ich es nicht richtig umschrieben habe.
Habe das Problem gelöst
Hier die Lösung (vielleicht ist dann klarer was ich wollte):
Sub Test()
Dim i As Long
'Text vorher:
'Kuchenblech$Küchenschrank$Boden-$platten und Teppich-$messer$Garten-$stuhl etc
Anzahl = Len(ActiveCell.Offset(0, 0)) - Len(Replace(ActiveCell.Offset(0, 0), "$", ""))
For i = 1 To Anzahl
ActiveCell.Offset(0, 0).Formula = WorksheetFunction.Substitute(ActiveCell.Offset(0, 0) _
.Formula, "$", "£", i)
Next
ActiveCell.Offset(0, 0).Replace "-£", "", xlPart
ActiveCell.Offset(0, 0).Replace "£", " ", xlPart
'Text nachher:
'Kuchenblech Küchenschrank$Bodenplatten und Teppich-$messer Garten-$stuhl etc
End Sub
Gebe mir nächste mal mehr Mühe das Problem richtig zu umschreiben.
Besten Dank und Gruss
Hugo
Anzeige
AW: Bestimmte Zeichen in Zelle entfernen
08.02.2011 17:52:52
Tino
Hallo,
so habe ich es verstanden.
Dieser Code sollte jedes zweite -$ entfernen, angefangen beim ersten vorkommen.
Sub test()
Dim Regex As Object, oMatch As Object
Dim iPos As Integer, n As Integer
Dim strText$

strText = "aaaaaaaaa $bbbbbbbb-bb-$ccccccccc-cc-$dddddddd$eeeeeeee$fffffffff$gggggggg-gg-$ hhhh$ etc"
Debug.Print strText
Set Regex = CreateObject("Vbscript.Regexp")

With Regex
    .MultiLine = True
    .Pattern = "\-\$"
    .Global = True
    Set oMatch = .Execute(strText)
End With

If oMatch.Count > 1 Then
    n = oMatch.Count - 1
    For n = n - (n Mod 2) To 0 Step -2
       iPos = oMatch(n).FirstIndex
       strText = Mid(strText, 1, iPos) & Mid(strText, iPos + 3, Len(strText))
    Next n
End If
Debug.Print strText
End Sub
Gruß Tino
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Zeichen in Excel-Zellen entfernen


Schritt-für-Schritt-Anleitung

Um bestimmte Zeichen in einer Excel-Zelle zu entfernen, kannst du die folgende VBA-Formel verwenden. Diese Anleitung zeigt dir, wie du jeden zweiten Bindestrich vor einem Dollarzeichen ($) löschen kannst.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
  3. Füge den folgenden Code in das Modul ein:
Sub EntferneBindestriche()
    Dim i As Long
    Dim Anzahl As Long
    Anzahl = Len(ActiveCell.Value) - Len(Replace(ActiveCell.Value, "$", ""))

    For i = 1 To Anzahl
        ActiveCell.Value = WorksheetFunction.Substitute(ActiveCell.Value, "$", "£", i)
    Next
    ActiveCell.Replace "-£", "", xlPart
    ActiveCell.Replace "£", " ", xlPart
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu deinem Excel-Dokument.
  2. Wähle die Zelle aus, die du bearbeiten möchtest, und führe das Makro aus.

Diese Methode hilft dir, spezifische Zeichen in deiner Excel-Zelle zu entfernen, wie z.B. Bindestriche vor dem Dollarzeichen.


Häufige Fehler und Lösungen

  • Fehler: Das Makro funktioniert nicht richtig.

    • Lösung: Überprüfe, ob du die richtige Zelle ausgewählt hast und ob das Makro korrekt eingefügt wurde.
  • Fehler: Der Text bleibt unverändert.

    • Lösung: Stelle sicher, dass die Zelle, die du bearbeitest, tatsächlich Bindestriche und Dollarzeichen enthält.

Alternative Methoden

Wenn du keine VBA-Lösungen verwenden möchtest, kannst du auch die Suchen und Ersetzen-Funktion in Excel nutzen:

  1. Wähle die Zelle oder den Bereich aus, in dem du die Zeichen entfernen möchtest.
  2. Drücke Strg + H, um das Dialogfeld "Suchen und Ersetzen" zu öffnen.
  3. Gib in das Feld "Suchen nach" den Bindestrich und das Dollarzeichen ein: -$
  4. Lass das Feld "Ersetzen durch" leer und klicke auf "Alle ersetzen".

Diese Methode ist einfach und erfordert kein Programmieren.


Praktische Beispiele

  1. Beispiel 1: Du hast einen Text wie Kuchenblech$Küchenschrank$Boden-$platten und möchtest den Bindestrich vor dem ersten Dollarzeichen entfernen.

    Verwende das oben stehende VBA-Skript oder die Suchen und Ersetzen-Funktion.

  2. Beispiel 2: Um alle Eurozeichen (€) zu entfernen, kannst du ebenfalls Suchen und Ersetzen verwenden. Setze in "Suchen nach" und lasse "Ersetzen durch" leer.


Tipps für Profis

  • Nutze die Funktion TEXTJOIN oder FILTER in neueren Excel-Versionen, um komplexe Daten zu verarbeiten.
  • Experimentiere mit Regex in VBA, um flexiblere Muster zu entfernen oder zu bearbeiten.
  • Erstelle eine Sicherungskopie deiner Daten, bevor du Massenänderungen vornimmst.

FAQ: Häufige Fragen

1. Wie kann ich alle Bindestriche in einer Zelle entfernen? Du kannst die Suchen und Ersetzen-Funktion verwenden, um alle Bindestriche durch ein Leerzeichen zu ersetzen.

2. Gibt es eine Möglichkeit, nur das erste Vorkommen eines Zeichens zu löschen? Ja, du kannst eine VBA-Funktion erstellen, die genau das tut, indem sie nur das erste Vorkommen eines bestimmten Zeichens sucht und entfernt.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige