Karan hat viele Textdaten in einer Arbeitsmappe. Einige dieser Textdaten enthalten Daten. Sie braucht eine Möglichkeit, Datumsangaben zu entfernen, aber jeden anderen Text in einer Zelle zu belassen. Was beispielsweise als „15.04.16 Test erfolgreich ausgeführt“ oder „Test am 15.04.16 ausgeführt“ beginnt, wäre nach dem Löschen „

Test wurde erfolgreich ausgeführt“ und „Test wurde ausgeführt“.

Wenn Ihre Daten immer einem einfachen Muster folgen, können Sie sie mit der Funktion SUBSTITUTE entfernen. Wenn das Datum beispielsweise immer aus einem einstelligen Monat und einem zweistelligen Tag besteht, können Sie es wie folgt entfernen:

=SUBSTITUTE(A1,MID(A1,SEARCH("?/??/??",A1),7),)

Es gibt mehrere Probleme mit einer solchen Formel. Erstens wird ein Fehlerwert zurückgegeben, wenn in Zelle A1 kein Datum vorhanden ist oder wenn das Datum in Zelle A1 nur einen einstelligen Tag hat. Wenn das Datum einen zweistelligen Monat hat, bleibt die erste Ziffer intakt (vorausgesetzt, das Datum verwendet einen zweistelligen Tag) oder es wird ein Fehlerwert zurückgegeben (wenn das Datum einen einstelligen Tag verwendet).

Wenn Ihr Datum am Anfang oder Ende des Textes in einer Zelle angezeigt wird, können Sie eine andere Art von Formel verwenden:

=IFERROR( IF( VALUE( LEFT( A1, 1)) > 0, RIGHT( A1, LEN(A1) - 7), ""), LEFT( A1, FIND( "/", A1) - 2))

Das Problem bei diesem Ansatz besteht darin, dass auch das genaue Muster M / TT / JJ oder MM / TT / JJ erforderlich ist. Es zeigt somit die gleichen Probleme wie die vorherige Formel.

Ein vielseitigerer Ansatz besteht darin, ein Makro zu verwenden, um nach einem Datum zu suchen und es dann aus der Zeichenfolge zu entfernen. Das folgende Beispielmakro betrachtet die Inhalte einer Zelle und unterteilt sie mithilfe der Split-Funktion in „Wörter“. Dann werden die Wörter wieder zusammengesetzt, solange das Wort kein Datum ist.

Function RemoveDates(ByVal vC As String)

Dim arr As Variant     Dim s As String     Dim i As Integer

RemoveDates = ""

If vC > "" Then         arr = Split(vC, " ")

For i = LBound(arr) To UBound(arr)

If Not IsDate(arr(i)) Then                 s = s & arr(i) & " "

End If         Next i         RemoveDates = Left(s, Len(s) - 1)

End If End Function

Sie verwenden das Makro wie folgt als benutzerdefinierte Funktion in Ihrem Arbeitsblatt:

=RemoveDates(A1)

Der einzige Nachteil dieses Makros besteht darin, dass diese Leerzeichen beim Ersetzen entfernt werden, wenn Sie mehrere Leerzeichen zwischen Wörtern haben. Wenn dies für Sie eine große Sache ist, können Sie sich auf einen regulären Ausdruck in Ihrem Makro verlassen, wie folgt:

Function RemoveDates(MyRange As Range) As String     Dim sRaw As String     Dim sPattern As String     Dim regEx As New RegExp

sRaw = MyRange.Value

sPattern = "[0-9]{1,2}[-.\\/][0-9]{1,2}[-.\\/][0-9]{2}"



With regEx         .Global = True         .MultiLine = True         .IgnoreCase = False         .pattern = sPattern     End With

If regEx.Test(sRaw) Then         RemoveDates = regEx.Replace(sRaw, "")

Else         RemoveDates = "Not matched"

End If     Set regEx = Nothing End Function

Diese Funktion wird in Ihrem Arbeitsblatt auf dieselbe Weise wie die zuvor benutzerdefinierte Funktion verwendet:

=RemoveDates(A1)

Die Verwendung regulärer Ausdrücke mag einigen als schwarze Kunst erscheinen, aber diese spezielle Verwendung ist ziemlich einfach. Das Muster (in der Variablen sPattern gespeichert) besagt, dass eine oder zwei Ziffern, gefolgt von einem Teilerzeichen (Bindestrich, Punkt, Backslash oder Schrägstrich), gefolgt von einer oder zwei weiteren Ziffern, gefolgt von einem anderen Teilerzeichen, gefolgt von zwei Ziffern, als a betrachtet werden Datum. Wenn eine solche Übereinstimmung in der Zelle gefunden wird, wird sie entfernt.

Um den regulären Espressions-Ansatz verwenden zu können, müssen Sie sicherstellen, dass Sie im Visual Basic-Editor einen Verweis auf die folgende Bibliothek einfügen (wählen Sie im Menü Extras die Option Verweise):

Microsoft VBScript Regular Expressions 5.5

Beachten Sie auch, dass die Funktion „Nicht übereinstimmend“ zurückgibt, wenn sich in der Zelle, auf die Sie verweisen, kein Datum befindet.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (7768) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.