Excel Smart Find and Replace nur bestimmte Zeichen

3

Ich möchte INT in INTERNATIONAL und NA in NATIONAL ASSEMBLY in der gesamten Excel-Arbeitsmappe über ein Excel-Makro oder ein Dialogfeld zum Suchen und Ersetzen ändern. Aber wenn ich das Makro ausführe oder es über das Dialogfeld Suchen und Ersetzen ändere, ersetzt es auch NA aus CHINA, die letzten zwei Zeichen, und es wird zu CHINATIONAL ASSEMBLY und INTERIOR zu INTERNATIONALERIOR.

Jetzt möchte ich, dass Excel nur das Zeichen NA in der Arbeitsmappe findet, das in keinem anderen Zeichen enthalten ist, ebenso das Zeichen INT, das keinem anderen Zeichen zugeordnet ist.

Asim
quelle
Können Sie das Makro teilen (vorausgesetzt, es ist VBa-Code)
Dave
Welche Excel-Version verwenden Sie?
Dangowans

Antworten:

1

Wenn Sie die VBA-Route wählen, versuchen Sie es mit Regular Expressions

Hier ist ein Anfang

Sub ReplaceWithRE()
    Dim re As Object 'RegExp
    Dim rng As Range, cl As Range
    Dim sh As Worksheet
    Dim wb As Workbook
    Dim sReplace As String
    Dim aReplace(0 To 1, 0 To 1) As String
    Dim i As Long

    Set wb = ActiveWorkbook
    Set re = CreateObject("vbscript.regexp") ' New RegExp
    re.Global = True
    re.IgnoreCase = False
    re.MultiLine = True

    ' Load array of patterns and replacements
    aReplace(0, 0) = "\bINT\b"
    aReplace(0, 1) = "INTERNATIONAL"
    aReplace(1, 0) = "\bNA\b"
    aReplace(1, 1) = "NATIONAL ASSEMBLY"

    For Each sh In wb.Worksheets
        On Error Resume Next
        Set rng = sh.UsedRange.SpecialCells(xlCellTypeConstants)
        If Err.Number <> 0 Then
            Err.Clear
        Else
            On Error GoTo 0
            For Each cl In rng
                sReplace = cl.Value
                ' Test each cell for each pattern, replace when found
                For i = 0 To UBound(aReplace, 1)
                    re.Pattern = aReplace(i, 0)
                    If re.Test(sReplace) Then
                        sReplace = re.Replace(sReplace, aReplace(i, 1))
                    End If
                Next
                cl.Value = sReplace
            Next
        End If
    Next


End Sub
chris neilsen
quelle
Du bist großartig!! Vielen Dank für diese großartige Hilfe. Es ist ein großartiges Makro, mit dem ich arbeiten kann. Es hat mir sehr geholfen. Noch einmal vielen Dank.
Asim
3

Befinden sich die Werte, die Sie ersetzen möchten , alleine in den Zellen (kein anderer Text), befolgen Sie auf jeden Fall die Lösung von CharlieRB . Wenn sich die Werte zusammen mit zusätzlichem Text in den Zellen befinden, funktioniert eine leicht geänderte Version.

Öffnen Sie das Fenster Suchen und Ersetzen. Klicken Sie auf die Registerkarte "Ersetzen".

Suchen und Ersetzen

Geben Sie die Werte "Suchen nach" und "Ersetzen durch" ein. Klicken Sie auf die Schaltfläche "Alle suchen".

Überprüfen Sie die Liste unten, in der angegeben ist, welche Datensätze gefunden wurden. Markieren Sie den Datensatz, den Sie aktualisieren möchten, und klicken Sie auf die Schaltfläche "Ersetzen".

Dangowans
quelle
... aber möchten Sie vielleicht Ihre Antwort bearbeiten , zu sagen „Markieren Sie den Datensatz  s zu aktualisierenden“ ( „Ich ... ganz Excel - Arbeitsmappe ändern möchten“) und vielleicht etwas über die Umschalttaste sagen + klicken und Strg + klicken.
Scott
2

Im Find and ReplaceFenster müssen Sie das Kontrollkästchen aktivieren und Match entire cell contentsdann ausführen.

Bildbeschreibung hier eingeben

CharlieRB
quelle
1
@pnuts: FWIW, ich glaube das ist aus der Frage nicht ersichtlich.
Scott
@pnuts: Da der Fragesteller mit Englisch zu kämpfen scheint „ ebenfalls Charakter INT , die an einem beliebigen anderen Zeichen nicht anhängen wird“ könnte sehr gut das gleiche wie „das Zeichen NA in der Arbeitsmappe , die nicht mit anderen Zeichen enthalten ist“ bedeuten ; dh "Zeichenfolge X in einer Zelle für sich, ohne andere Zeichen."
Scott
Scott hat recht, tut mir leid für mein schwaches Englisch, das ebenfalls so gemeint ist wie im vorigen Fall erwähnt. Aber es wird jetzt von Chris Neilsen gelöst.
Asim
Ich glaube, dass wir alle verstanden haben, was Sie unter "ebenfalls" verstanden haben. es waren die anderen Wörter, bei denen wir uns nicht sicher waren. Übrigens, wenn Sie jemandes Frage (aus einem Kommentar) in einem neuen Kommentar beantworten, ist es üblich, den Namen dieser Person vor dem "@" zu erwähnen, wie in "@Scott, @pnuts". Auf diese Weise werden wir benachrichtigt. Siehe den Beantworten in den Kommentaren Absätze des Kommentars Formatierung Abschnitt der Hilfe - Seite Markdown bearbeiten.
Scott
1
  1. Speichern Sie Ihre Datei als CSV-Datei. Wenn Sie eine Teilmenge Ihres Arbeitsblatts (z. B. ausgewählte Spalten und / oder Zeilen) bearbeiten möchten, kopieren Sie diesen Bereich in eine Arbeitsdatei (oder ein Arbeitsblatt) und speichern Sie diese als CSV. Wenn Sie mehrere Blätter ändern müssen, wiederholen Sie diesen Vorgang für jedes Blatt.
  2. Bearbeiten Sie die CSV-Datei mit einem intelligenten Texteditor (dh intelligenter als Notepad).  viist gut dafür; Verwenden Sie einen Befehl wie %s/\<INT\>/INTERNATIONAL/g. Microsoft Word wird wahrscheinlich ausreichen; Verwenden Sie die Option More>>„ Nur ganze Wörter suchen“ unter „Suchen und Ersetzen“.
  3. Lesen Sie die bearbeitete CSV-Datei wieder in Excel.
  4. Kopieren Sie die geänderten Werte in Ihre ursprüngliche Arbeitsmappe, um die Formatierung beizubehalten.
Scott
quelle
Vielen Dank für Ihre Hilfe, aber es ist ein langwieriger Prozess.
Asim
1
Und Sie glauben, dass eine VBA-Routine mit mehr als 700 Zeichen schneller ist?
Scott
1
@Scott Es ist, wenn der Code für Sie bereitgestellt wird. :)
Hervorragend