Nicht standardmäßige Sortierung (Microsoft Excel)
In einer Büroumgebung ist es nicht ungewöhnlich, mit Excel-Dateien zu arbeiten, die von anderen Personen erstellt wurden. Einige dieser Dateien können sich erheblich von den von Ihnen erstellten Dateien unterscheiden. Sie können beispielsweise eine Datei erben, in der die erste Spalte den Vornamen einer Person in der ersten Zeile und den Nachnamen in der zweiten Zeile enthält. (Der Benutzer drückte Alt + Eingabetaste, um den Vornamen vom zweiten Namen in derselben Zelle zu trennen.) Was ist, wenn Sie die Zeilen im Arbeitsblatt nach dem Nachnamen der Person sortieren müssen?
Der beste Weg, um eine solche Aufgabe zu erledigen, besteht darin, eine neue Spalte in das Arbeitsblatt einzufügen – Spalte B. (Diese Spalte kann ausgeblendet sein, damit sie nicht angezeigt wird, wenn Sie normalerweise mit dem Arbeitsblatt arbeiten oder es ausdrucken.) Folgendes Die Formel sollte dann in jede Zelle der Spalte B eingefügt werden:
=RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2))
Offensichtlich ändern sich die Zellreferenzen, wenn sie in Spalte B platziert werden. In dieser Formel bestimmt der FIND-Teil die Position des Alt + Enter-Zeichens (der Zeichencode dieses Zeichens ist 10). Die RIGHT-Funktion gibt die Zeichen in der Zelle zurück, beginnend mit dem Zeichen nach dem Alt + Enter-Zeichen. Diese Lösung führt zu Spalte B, die die Informationen in der zweiten Zeile der ersten Spalte enthält. Sie können dann einfach anhand der Informationen in Spalte B sortieren.
Bei dieser Lösung wird eine Annahme getroffen: In jeder Zelle der Spalte A befinden sich nur zwei Zeilen. Wenn mehr oder weniger vorhanden sind, wird die Lösung schwieriger. In diesem Fall besteht die beste (und einfachste) Lösung darin, das Arbeitsblatt so zu formatieren, dass sich der Sortierschlüssel in einer Spalte befindet. Wenn dies aus irgendeinem Grund nicht möglich ist, kann die folgende benutzerdefinierte VBA-Funktion verwendet werden:
Function SecLine(x) As String Dim B1 As Integer Dim B2 As Integer B1 = InStr(x, Chr(10)) B2 = InStr(B1 + 1, x, Chr(10)) If (B1 + B2) > 0 Then If B2 > 0 Then SecLine = Mid(x, B1 + 1, B2 – B1 - 1) Else SecLine = Mid(x, B1 + 1) End If End If End Function
Um diese Routine zu verwenden, fügen Sie einfach Folgendes in die Zellen in Spalte B ein:
=SecLine(A2)
Unabhängig davon, wie viele Zeilen sich in Zelle A2 befinden (in diesem Fall), gibt die Funktion eine Zeichenfolge zurück, die den Wert der zweiten Zeile darstellt.
_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 (2252) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: