2016-05-10 16 views
-2

Ich bin sehr neu in Excel VBA so bitte mich gut :)verteilen gleichmäßig auf den Zellenwert der Spalte A bis BCD

Mein Problem ist, ich will mit dem Wert, bis die letzten Zelle Werte der Spalte A kopieren und fügen sie ihn in BCD bzw.

Beispiel

Spalte A hat 3 Reihen mit Werten Tim, john, Mer jeweils

ich möchte fügen sie ihn in Spalten B2 C2 D2 jeweils zu

Problem: Spalte A hat eine dynamische Zeilennummer, so dass ich bis zur letzten nicht leeren Zelle kopieren soll. aber wenn Spalte A mehr als 3 ist (Anzahl der einzufügenden Spalten), wird sie in Schleife und dann in C3 und dann in D3 usw. eingefügt, bis alle nicht leeren Zellen gleichmäßig auf die 3 Spalten verteilt sind (B, C und D)

Hoffnung dieses Problem ist klar

+2

Versuchen Sie, ein Makro aufzuzeichnen und zu sehen, welchen Code Sie erhalten. –

+0

versuchen, zwei verschachtelte Schleifen zu schreiben. Einer wird Schleife A1 zu A100 und inner wird Schalter B, C, D und schreibt die Werte –

Antwort

0
Sub CopyData() 
Dim x As Long, i As Long 

Application.ScreenUpdating = False 

For i = 1 To 100 Step 3 
    x = x + 1 
    Range("A" & i & ":A" & i + 2).Copy 
    Range("B" & x).PasteSpecial xlPasteValues, , , True 
Next i 

Application.ScreenUpdating = True 

End Sub 
0

Vielleicht Nutzung der TRANSPOSE Funktion machen?

Sub TransposeToColumns() 

    Dim lLastRow As Long 

    With ThisWorkbook.Worksheets("Sheet1") 
     'Get the last row (same as going to end of sheet and pressing Ctrl+Up). 
     lLastRow = .Range("A" & Rows.Count).End(xlUp).Row 

     If lLastRow > 3 Then 
      'Cells(1,2) is row 1, column 2. 
      With .Range(.Cells(1, 2), .Cells(1, lLastRow + 1)) 
       'R1C1 style of referencing - absolute reference to A1 is R1C1 (row 1 column 1). 
       .FormulaArray = "=TRANSPOSE(R1C1:R" & lLastRow & "C1)" 
       'Replace formula with values. 
       .Value = .Value 
      End With 
     End If 
    End With 

End Sub 

einfach realisiert - dies heraus Fehler, wenn Sie versuchen und tun es mit mehr als 16.383 Zeilen (das heißt die Anzahl der Spalten -1). Aber es wird alle Spalten in 0,040469668631069 Sekunden tun. :)

Verwandte Themen