2016-12-14 2 views
0

Ich habe eine Reihe von Zellen, die zwei Zeilen Text in jeder Zelle nach dem Ziehen der Daten in Excel haben. Was ich suche, ist ein Makro mit der Trim Funktion zu verwenden, um alles in der Zelle nach der zweiten Zeile zu entfernen. Ich bin verwirrt mit diesen Daten, es ist, als ob Sie Daten in eine Zelle eingeben und in die nächste Zelle eingeben, aber es ist eine Zelle und wird nicht zusammengeführt.Identifizieren der zweiten Textzeile in einer Zelle mit VBA

ex.

Someone's Name [123] Procedure room, procedure done

Gibt es eine Möglichkeit, diesen Zeilenumbruch zu identifizieren?

Vielen Dank für jede Hilfe, meine Köpfe drehen und ich stemple für den Tag. cheers

+1

Alt + Eingabe, erstellt einen Zeilenumbruch in der Zelle. 'TRIM' wird nicht helfen, da es kein Platz ist. Verwenden Sie Ersatz. Wie: '= SUBSTITUTE (A1, CHAR (10)," ")' – cyboashu

+0

Wenn Sie wirklich "alles in der Zelle nach der ** zweiten ** Zeile entfernen" wollen, müssen einige Optimierungen an den Antworten vorgenommen werden . (Aber hoffentlich ist das nur ein Tippfehler und du meintest "erste Zeile".) – YowE3K

+0

ah ja, ich meinte alles in der zweiten Zeile, also nach dem ersten. – Awill

Antwort

3

Suchen Sie einfach nach dem ASCII-10. Wählen Sie die Zellen aus, die Sie verarbeiten und ausführen möchten:

Sub KleanUp() 
    Dim r As Range 
    For Each r In Selection 
     r.Value = Split(r.Value, Chr(10))(0) 
    Next r 
End Sub 

Nur die erste Zeile wird in jeder Zelle beibehalten.

EDIT # 1:

Wie Ralph weist darauf hin, ASCII-13 auch in Betracht gezogen werden sollte, deshalb:

Sub KleanUp2() 
    Dim r As Range 
    For Each r In Selection 
     r.Value = Split(Replace(r.Value, Chr(13), Chr(10)), Chr(10))(0) 
    Next r 
End Sub 

Dieser verwandelt sich in eine Single-Stil Zeilenumbruch.

EDIT # 2:

Es ist möglich, die Leistung des Unter zu verbessern, indem:

  • die Daten in einen VBA-Array als eine einzige große Blocklese
  • durch die Looping Array (in VBA)
  • Übertragen der Daten zurück zum Arbeitsblatt in einem einzigen Block
+1

Es gibt verschiedene Möglichkeiten für Zeilenumbrüche. 'Chr (10)' ist nur einer von ihnen. Sie können 'vbCrLf' und' vbNewLine' nur einbeziehen, um Ihre Lösung zu vervollständigen. – Ralph

+0

@Ralph Ich werde das beheben. –

+0

Die erste scheint perfekt zu funktionieren für das, was ich vorhatte. Die Bearbeitung gibt mir den Fehler "Falsche Anzahl von Argumenten oder ungültige Eigenschaftenzuweisung" Jetzt, um etwas Zeit auf Google zu verbringen, damit ich verstehen kann, was Sie mir zur Verfügung gestellt haben. Vielen Dank! – Awill

Verwandte Themen