2016-05-04 10 views
0

Ich habe ein Excel-Blatt mit einer Spalte mit Texten wie "Hallo dort 2005 A" Ich möchte diesen Text zwischen zwei Spalten, eine mit 'Hallo dort 2005' und die andere sagt 'A'.Split-Spalte Text zu benachbarten Spalten mit Excel VBA

Ich habe Split-Funktion in VBA versucht, aber ich kann es nicht Schleife durch die gesamte Spalte machen oder sogar mit einem Delimeter kommen, die genau vor dem Buchstaben "A" aufteilen wird.

Die Ergebnisse sollten in etwa so aussehen:

Results

+1

Zuerst sollten Sie die Splitregel bestimmen. Ist es immer vor dem letzten Buchstaben? Ist es der 3. Raum? Ist es das 17. Zeichen? Ist es nur diese eine Saite, die du spalten willst oder gibt es auch andere, die geteilt werden sollten - mit welcher gemeinsamen Regel? Wenn Sie keine Regel definieren können, ist es nicht möglich, sie zu automatisieren. – Leviathan

+0

Es sieht aus wie eine gute Regel wäre alles nach der Nummer? Bitte bestätigen Sie, ob das funktioniert und dann kann dies leicht durchgeführt werden. – tigeravatar

+0

Warum gibt es auch leere Zeilen in den Stichprobenergebnissen? – tigeravatar

Antwort

0

versuchen, diese

Option Explicit 

Sub main() 
Dim cell As Range 
Dim strng As Variant 
Dim rightStrng As String 
Dim i As Long 

With Worksheets("multimanager") '<== change it as per your needs 
    For Each cell In .Columns("A").SpecialCells(xlCellTypeConstants, xlTextValues) 'assuming that "column containing texts" is column "A" 
     strng = Split(cell) 
     rightStrng = "" 
     i = UBound(strng) 
     Do While Not IsNumeric(strng(i)) And i > 0 
      rightStrng = strng(i) & " " & rightStrng 
      i = i - 1 
     Loop 
     If IsNumeric(strng(i)) Then 
      rightStrng = Application.WorksheetFunction.Trim(rightStrng) 
      cell.Offset(, 2) = rightStrng 
      cell.Offset(, 1) = Left(cell.Value, IIf(rightStrng <> "", InStrRev(cell.Value, rightStrng) - 2, Len(cell.Value))) 
     End If 
    Next cell 

End With 

End Sub 
+0

Danke @ user3598756! Das hilft mir sehr. sehr geschätzt – ShilpiT

+0

Gern geschehen – user3598756

0

Instr (Cellvalue,“„) Sie die Position Ihrer ersten Raum

firstPos = instr(cellValue," ") ' first space 
secondPos = instr(firstPos + 1, cellValue, " ") ' second space 

etc geben wird ..

oder

gefolgt von mid und replace

secondColumnValue = mid(cellValue, thirdPos + 1) 
firstColumnValue = replace(cellValue, secondColumnValue, "") 
Verwandte Themen