Rajeev braucht eine Formel, die die ersten Buchstaben einer Reihe von Wörtern extrahiert. Wenn eine Zelle beispielsweise den Text „Rajeev Kumar Pandey“ enthält, möchte er die Buchstaben „RKP“ in eine andere Zelle extrahieren.

Die Anzahl der Wörter in Reihe kann von Zelle zu Zelle variieren.

Es gibt verschiedene Möglichkeiten, wie diese Aufgabe angegangen werden kann. Zunächst wird davon ausgegangen, dass Sie die Struktur Ihres Arbeitsblatts nicht durch Hinzufügen von Zwischenspalten ändern möchten. Diese Annahme schließt auch die Verwendung der Funktion „Text in Spalten“ aus, um die ursprüngliche Zeichenfolge in einzelne Wörter aufzuteilen.

Der Schlüssel zum Problem besteht darin, sicherzustellen, dass Ihre Formel bestimmen kann, wo sich die Leerzeichen in der ursprünglichen Zeichenfolge befinden. Sie könnten denken, dass eine Formel wie die folgende die Arbeit erledigt:

=LEFT(A1,1)&MID(A1,FIND(" ",A1,1)+1,1)&MID(A1, FIND(" ",A1,FIND(" ",A1,1)+1)+1,1)

Diese Formel funktioniert teilweise. Es funktioniert einwandfrei, wenn die ursprüngliche Zeichenfolge zwei Leerzeichen enthält, die drei Wörter trennen. Wenn weniger Wörter vorhanden sind, gibt die Formel einen Fehler zurück. Wenn weitere Wörter vorhanden sind, werden nur die ersten Buchstaben der ersten drei Wörter zurückgegeben (nach dem dritten Wort wird alles ignoriert).

Dies bedeutet, dass die Formel nicht nur nach Leerzeichen suchen muss, sondern auch Fehler behandeln muss, wenn keine Leerzeichen vorhanden sind oder wenn zu wenige Leerzeichen vorhanden sind. Die Fehlerprüfung bedeutet, dass die Formel viel länger wird:

=IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)), IF(ISERR(LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), IF(ISERR(LEFT(A1,1)),"",LEFT(A1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)), LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)&MID(A1,SEARCH(" ",A1, SEARCH(" ",A1)+1)+1,1)),LEFT(A1,1)&MID(A1,SEARCH(" ",A1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1,1)

&MID(A1,SEARCH(" ",A1,SEARCH(" ",A1,SEARCH(" ",A1)+1)+1)+1,1))

Diese Formel verarbeitet alle Elemente von 0 bis 4 Wörtern in einer Zeichenfolge ordnungsgemäß. Es wird auch davon ausgegangen, dass die Zeichenfolge nicht mit einem Leerzeichen beginnt oder endet und nicht mehrere Leerzeichen zwischen Wörtern enthält. Wenn Sie eine größere Anzahl von Wörtern oder andere mögliche Komplikationen (z. B. die Anzahl der Leerzeichen zwischen Wörtern) behandeln möchten, verwenden Sie am besten eine benutzerdefinierte Funktion.

Es gibt eine Reihe von Möglichkeiten, wie eine benutzerdefinierte Funktion die führenden Zeichen aus den Wörtern einer Zeichenfolge ziehen kann. Tatsächlich habe ich einige Variationen erhalten, die das Gleiche bewirken. Das folgende Beispiel ist jedoch möglicherweise der prägnanteste Code, auf den ich gestoßen bin:

Function Initials1(Raw As String) As String     Dim Temp As Variant     Dim J As Integer

Application.Volatile     Temp = Split(Trim(Raw))



For J = 0 To UBound(Temp)

Initials1 = Initials1 & Left(Temp(J), 1)

Next J End Function

Dieser Code funktioniert in jeder Version von VBA ab Excel 2000. Die Split-Funktion „zerreißt“ eine Zeichenfolge basierend darauf, wo Leerzeichen darin vorkommen. Die einzelnen Wörter in der Zeichenfolge werden in einem Array (in diesem Fall Temp) platziert, in dem Sie dann auf einzelne Wörter zugreifen können. Um die Funktion in Ihrem Arbeitsblatt zu verwenden, verwenden Sie einfach Folgendes:

=Initials1(A1)

Wenn Sie eine Excel-Version verwenden, die die Split-Funktion nicht unterstützt, funktioniert der folgende Code ebenfalls einwandfrei:

Function Initials2(Raw As String)

Dim p As Integer

Application.Volatile     Initials2 = ""

p = 0     Do         Initials2 = Trim(Initials2) & Mid(Raw, p + 1, 1)

p = InStr(p + 1, Raw, " ")

Loop Until p = 0 End Function

_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 (8661) 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: