Wir haben ungefähr 3500 Dokumente, deren Dateinamen manuell gelöscht werden müssen, um Sonderzeichen wie Klammern, Doppelpunkte, Semikolons, Kommas usw. zu entfernen.
Ich habe eine Textdatei, die ich in Excel gespeichert habe, und ich versuche, eine Spalte zu erstellen, die den Dateinamen zur Änderung kennzeichnet, wenn dieser Sonderzeichen enthält. Die Pseudocode-Formel wäre
=IF (cellname contains [^a-zA-z_-0-9], then "1", else "0")
um die Zeile zu kennzeichnen, wenn sie andere Zeichen als AZ, 0-9, - oder _ enthält, unabhängig von der Groß- und Kleinschreibung.
Kennt jemand etwas, das für mich funktionieren könnte? Ich zögere, Code und massive if
Aussagen zu machen, wenn es etwas schnell und einfach gibt.
Antworten:
Kein Code? Aber es ist so kurz und einfach und wunderschön und ... :(
Ihr RegEx-Muster
[^A-Za-z0-9_-]
wird verwendet, um alle Sonderzeichen in allen Zellen zu entfernen.Bearbeiten
Dies ist so nah wie möglich an Ihrer ursprünglichen Frage.
Der zweite Code ist eine benutzerdefinierte Funktion
=RegExCheck(A1,"[^A-Za-z0-9_-]")
mit 2 Argumenten. Die erste ist die zu überprüfende Zelle. Das zweite ist das zu überprüfende RegEx-Muster. Wenn das Muster mit einem der Zeichen in Ihrer Zelle übereinstimmt, wird 1 zurückgegeben, andernfalls 0.Sie können es wie jede andere normale Excel-Formel verwenden, wenn Sie zuerst den VBA-Editor mit ALT+ öffnen F11, ein neues Modul (!) Einfügen und den folgenden Code einfügen.
Für Benutzer, die noch nicht mit RegEx vertraut sind, erkläre ich Ihr Muster:
[^A-Za-z0-9_-]
quelle
=RegExReplace(cell)
wird nicht erkannt .... und ich bin etwas verrostet beim erstellen neuer funktionen.Hier ist eine benutzerdefinierte Funktion, die mit etwas ähnlichem wie nixdas Code 1 zurückgibt, wenn die Zelle Sonderzeichen enthält.
Benutzerdefinierte Funktionen (UDFs) sind sehr einfach zu installieren und zu verwenden:
Wenn Sie die Arbeitsmappe speichern, wird die UDF mit dieser gespeichert. Wenn Sie eine Excel-Version später als 2003 verwenden, müssen Sie die Datei als .xlsm und nicht als .xlsx speichern
So entfernen Sie die UDF:
So verwenden Sie die UDF aus Excel:
= IsSpecial (A1)
Weitere Informationen zu Makros im Allgemeinen finden Sie unter:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
und
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
und
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
für Einzelheiten zu UDFs
Makros müssen aktiviert sein, damit dies funktioniert !
quelle
If sCh Like "[0-9a-zA-Z ]" Or sCh = "_" Then
dass das Makro davon ausgeht, dass Leerzeichen gültige Zeichen sind?Hier ist eine bedingte Formatierungslösung, die die Datensätze mit Sonderzeichen kennzeichnet.
Wenden Sie einfach eine neue bedingte Formatierungsregel auf Ihre Daten an, die die unten stehende (extrem lange) Formel verwendet
A1
sich der erste Datensatz in der Spalte mit den Dateinamen befindet:Diese Formel überprüft jedes Zeichen jedes Dateinamens und bestimmt, ob sein ASCII-Code außerhalb der zulässigen Zeichenwerte liegt. Leider sind die zulässigen Zeichencodes nicht alle zusammenhängend, weshalb in der Formel Summen von
SUMPRODUCT
s verwendet werden müssen. Die Formel gibt die Anzahl der fehlerhaften Zeichen zurück. Alle Zellen, die einen Wert größer als 0 zurückgeben, werden markiert.Beispiel:
quelle
Ich habe einen anderen Ansatz gewählt, um Sonderzeichen zu finden. Ich habe für jedes der zulässigen Zeichen neue Spalten erstellt und dann mit einer Formel wie der folgenden gezählt, wie oft dieses zulässige Zeichen in jedem Zeileneintrag enthalten war (Z2):
Dann summierte ich die Anzahl der zulässigen Zeichen in jeder Zeile und verglich sie mit der Gesamtlänge des Zeileneintrags.
Und schließlich sortierte ich nach der letzten Spalte (BF2), um negative Werte zu finden. Dies führte mich zu den Spalten, die korrigiert werden mussten.
quelle