2016-04-22 21 views
-1

Ich versuche eine Do While-Schleife, die 3 Zellen dauert, teilt sie auf, nimmt die richtige Split und transponiert es. nach unten bewegt, dann auf den nächsten Satz von 3. Hier ist, was ichExcel VBA transponiert Probleme

Sub transposer2() 
Dim i As Integer 

Do While i < 300 
    Range(ActiveCell, ActiveCell.Offset(2, 0)).Select 
     Selection.TextToColumns Destination:=ActiveCell.Offset(0, 1).Select, DataType:=xlDelimited, _ 
     TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ 
     Semicolon:=False, Comma:=False, Space:=False, Other:=True, OtherChar _ 
     :=":", FieldInfo:=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True 
    Range(ActiveCell, ActiveCell.Offset(2, 0)).Select 
    Selection.Copy 
    Range(ActiveCell.Offset(0, 1)).Select 
     Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, transpose:=True 
    Application.CutCopyMode = False 
    ActiveCell(9, -3).Select 
Loop 

End Sub 

Die Auswahl nach der Bereichsauswahl haben ist, wo ich Probleme habe.

Dies ist die Daten, die ich aus einer txt-Datei kopieren und endet auseinander sind Raum 9 Reihen bis

TAPER ANGLE : 6.6297 
GAGE POINT DIA : 0.1775 
DEPTH OF TAPER : -0.5950 
+1

Warum wählen Sie diese Zellen aus? –

+0

Die Zellen enthalten ursprünglich eine Zeichenfolge und eine Reihe von Zahlen wie "xxxxxxx xxx xxx: #####", ich teile diese und wähle dann die Zahlen aus, die nach rechts geteilt werden. dann transponiere. nachdem ich das funktioniere, plane ich, ein bisschen Code hinzuzufügen, um alle außer den transponierten Daten zu löschen –

+0

Das ist kein Grund, 'Select' zu verwenden. Sie sollten ActiveCell auch auf eine Variable setzen. Bitte lesen Sie [Wie vermeidet man die Verwendung von Select in Excel VBA-Makros] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros). Ihr Code wird weniger überladen und einfacher zu debuggen. Bitte lesen Sie auch die Hilfe für [Wie ein Beispiel anzugeben] (http://stackoverflow.com/help/mcve) –

Antwort

0

diesem einen Versuch geben. Es verwendet die Split-Funktion anstelle von Text für Spalten.

Sub Transposer() 

Dim MySpl 

SplitAgain: 
    For x = 0 To 2 
     MySpl = Split(ActiveCell.Offset(x, 0).Value, " : ") 
     ActiveCell.Offset(0, x + 1).Value = MySpl(1) 
    Next 
    If ActiveCell.Offset(3, 0).Value <> "" Then 
     ActiveCell.Offset(3, 0).Select 
     GoTo SplitAgain 
    End If 

End Sub