Wenn Sie auf eine Situation stoßen, in der Sie nur das erste Wort in jeder Zeile einer Zelle und nicht alle Zeichen benötigen, müssen Sie diesen Artikel lesen. Das folgende Tutorial hilft Ihnen dabei, nur das erste Wort über VBA-Code in Excel abzurufen.
In diesem Artikel konzentrieren wir uns darauf, wie Sie nur das erste Wort in jeder Zeile einer Zelle beibehalten, die durch Semikolon über Makrocodes getrennt ist.
Frage: Die Daten, in denen ich arbeite, haben manchmal mehrere Zeilen in jeder Zelle und ich möchte nur das erste Wort extrahieren.
Sie finden die ursprüngliche Frage hier
Es folgt eine Momentaufnahme des eingegebenen Texts (vor dem Blatt)
Es folgt eine Momentaufnahme des Eingabetextes (After Sheet) in Spalte A & erfordert eine Ausgabe in Spalte B; siehe unten Schnappschuss:
Um den Code zu erhalten; Wir müssen die folgenden Schritte ausführen, um den VB-Editor zu starten
- Klicken Sie auf die Registerkarte Entwickler
- Wählen Sie in der Gruppe Code die Option Visual Basic . aus
- Kopieren Sie den folgenden Code in das Standardmodul
Funktion FirstWordOnly(rng As Range) Dim Arr() As Variant Dim Count As Integer Dim i As Integer Count = Len(rng) - Len(Replace(rng, Chr(10), "")) If Count > 0 Then ReDim Arr (0 To Count) For i = 0 To Count If i = 0 Then Arr(i) = Left(rng, InStr(1, rng, "") - 1) ElseIf j = 0 Then j = InStr(1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, "") - j) Sonst j = InStr(j + 1, rng, Chr(10)) Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j) End If Next FirstWordOnly = Join(Arr, "; ") Else If InStr(1, rng, "") > 0 Then FirstWordOnly = Left(rng, InStr(1, rng, "")) Sonst FirstWordOnly = rng Ende wenn Ende wenn Ende Funktion
Jetzt ist der VBA-Code einsatzbereit; Wir verwenden die neu erstellte benutzerdefinierte Funktion, d. h. "FirstWordOnly" in Before Sheet.
- Um die Ausgabe mit UDF in Zelle B2 zu erhalten, lautet die Formel
- =Nur erstesWort(A2)
Code-Erklärung:
Im obigen Code haben wir die VBA-Funktionen COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN verwendet.
- „Len(rng)“; Dadurch wird die Länge der Zelle überprüft, auf die wir uns beziehen
- ‘Ersetzen(rng, Chr(10), ""’; Der Code überprüft Chr(10), d. h. Zeilenumbruch in jeder Zeile und ersetzt dann durch doppelte Anführungszeichen (nichts)
- ‘Count = Len(rng) - Len(Replace(rng, Chr(10), ""))’; Count speichert die Längendifferenz jeder Zeile nach dem Ersetzen des Zeilenumbruchs
- Wenn Anzahl > 0; Dadurch wird überprüft, ob die Länge von Count größer als Null ist und wenn festgestellt wird, dass sie gleich Null ist, d. h. die Zelle ist leer, dann wird die IF-Bedingung den Code nicht ausführen. Um dies zu überprüfen, können Sie = FirstWordOnly (A5) in Zelle B5 verwenden und es wird 0 zurückgegeben
- Wenn die Zelle nicht leer ist, wird die For-Schleife mit der IF-Bedingung verwendet und mit der LEFT-Funktion wird das erste Wort abgerufen
- Die JOIN-Funktion fügt ein Semikolon am Ende hinzu, wenn in jeder Zelle mehrere Zeilen vorhanden sind
Abschluss: Mit UDF können wir alles in jeder Zellzeile außer dem ersten Wort über VBA entfernen. Diese Funktion funktioniert in allen Versionen von alt bis neu, d. h. Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.
Wenn Ihnen unsere Blogs gefallen haben, teilen Sie sie mit Ihren Freunden auf Facebook. Und Sie können uns auch auf Twitter und Facebook folgen.
Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern, ergänzen oder erneuern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site