2016-06-24 2 views
1

Ich führe diesen Code in VBA und ich möchte die ganze Zelle in ein Array in einem neuen Blatt getrennt bekommen, aber ich kann es nicht bekommen, alles in der Zelle wie unten abgebildet zu teilen. Ich möchte, dass es in eine neue Zelle und ein neues Array aufgeteilt wird, damit ich nach Schlüsselwörtern in diesem Array suchen kann. Bitte sehen Sie sich den Code an und sehen Sie, was Sie tun können.Ganze Zeichenfolge in Zelle nicht splitternd

Dank

Sub SplitWithFormat() 
 
    Dim R As Range, C As Range 
 
    Dim i As Long, V As Variant 
 

 

 
Set R = Range("d1", Cells(Rows.Count, "d").End(xlUp)) 
 
For Each C In R 
 
    With C 
 
     .TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _ 
 
     consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ 
 
     Space:=True, other:=False 
 

 
     .Copy 
 
     Range(.Offset(0, 1), Cells(.Row, Columns.Count).End(xlToLeft)).PasteSpecial xlPasteFormats 
 
    End With 
 
Next C 
 
Application.CutCopyMode = False 
 

 
End Sub​

enter image description here

+2

Versuchen Sie 'split' mit Leerzeichen als Trennzeichen. – findwindow

+1

Ich würde auch Split verwenden. Sie müssen jedoch verdoppeln. Sie teilen die Zelle in ein Array auf, indem Sie vbCRLF als Trennzeichen verwenden, und teilen Sie dann jedes Arrayelement mit Leerzeichen als Trennzeichen auf. – Kyle

Antwort

1

Kann nicht aus Ihrem Beispiel sagen, wenn Ihre Zelle mit einem CR-LF oder nur ein LF gewickelt ist.

Angenommen, es ist nur eine Linie, diese Arbeit ernähren sollte:

Ersetzen Sie diese Zeile

.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _ 
    consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ 
    Space:=True, other:=False 

mit dieser Linie

.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _ 
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ 
Space:=True, other:=True, Otherchar:=vbLf 

Wenn es tatsächlich ist eine Kombination aus - dann verwenden:

.TextToColumns Destination:=.Offset(0, 1), DataType:=xlDelimited, _ 
consecutivedelimiter:=True, Tab:=False, semicolon:=True, comma:=False, _ 
Space:=True, other:=True, Otherchar:=vbCrLf 

EDIT - split Zellen in Reihe umwandeln

bei neuen Erklärungen hinzufügen oben

Dim varHorizArray As Variant Dim rge As Range Dim intCol As Integer

Vor .Copy Befehl,

hinzufügen
Set rge = Selection 
varHorizArray = rge 

Beispiel für die Verwendung der resultierenden Arra y, zum Ende hinzufügen

' Array returned is two dimensional - 1 row by 7 columns 
    For intCol = LBound(varHorizArray, 2) To UBound(varHorizArray, 2) 
Debug.Print varHorizArray(1, intCol) 
    Next intCol 
+0

Danke, dass die neue Linie funktioniert. Wie würde ich den Offset ändern, um das Array an ein neues Blatt zu senden, so dass ich die Strings im Inneren suchen kann? – johndoe253

+0

Welches Array? Ich sehe nichts in Ihrem Code, der auf ein Array verweist. – dbmitch

+0

Wie kann ich die geteilten Zellen zu einem Array machen? – johndoe253

Verwandte Themen