2017-10-14 1 views
0

Ich versuche, einen Bereich, der leere Zellen enthält, in eine einzelne Spalte auf einem anderen Blatt zu kopieren und einzufügen. Ich möchte, dass die Leerzeichen ignoriert werden.Bereich mit leeren Zellen kopieren und in einzelne Spalte einfügen

Hier ist der Franken Code, den ich im Moment bin mit es langsam ist und ein bisschen cluncky picture included to better describe

ich auf ihn erweitern möchte, so dass mehrere Bereiche mit in die gleiche Spalte dh finden die letzte Zelle einfügen ein Wert und fügen Sie in die nächste Zelle ein.

ich gesagt wurde, es so etwas wie dieses

  'for r = 1 to 4 
      ' for c = 1 to 8 
      '  does rc have val, 
      '   then copy to new sheet 
      '   increment copy var 
      '  increment c 
      '  increment r 


Sheets(Array("next record date")).Select 
Range("G11:AZZ110").Select 
If TypeName(Selection) = "Range" Then 
    If Selection.Count > 1 Then 
     If Selection.Count <= Selection.Parent.Rows.Count Then 
      vaCells = Selection.Value 

      ReDim vOutput(1 To UBound(vaCells, 1) * UBound(vaCells, 2), 1 To 1) 

      For j = LBound(vaCells, 2) To UBound(vaCells, 2) 
       For i = LBound(vaCells, 1) To UBound(vaCells, 1) 
        If Len(vaCells(i, j)) > 0 Then 
         lRow = lRow + 1 
         Sheets("Data").Select 
         Range("E2").Select 
         vOutput(lRow, 1) = vaCells(i, j) 
         Else 
       End If 
      Next i 
     Next j 

      Selection.ClearContents 
      Selection.Cells(1).Resize(lRow).Value = vOutput 
    End If 
End If 

End If

Danke,

Jerome

+0

Hallo, ein Bild Ihrer Quelldaten und der gewünschten Ausgabe wäre hilfreich. Und verwende nicht .select. Sie werden in der Lage sein, eine With-Anweisung zu verwenden, und Sie brauchen auch nicht wirklich Sheet-Array, wenn Sie von nur einem Blatt kopieren (obwohl das wählerisch sein mag). Warum auch wenn TypeName (Auswahl) = "Range" Then? Sie haben gerade den Bereich ausgewählt. Kann es aus irgendeinem Grund nicht ausgewählt werden? – QHarr

Antwort

0

Spezielle Zellen Konstanten Verfahren und transponieren Paste

Public Sub TransposeRange() 

ThisWorkbook.Worksheets("next record date").Range("G11:AZ11").SpecialCells(xlCellTypeConstants, 23).Copy 
ThisWorkbook.Worksheets("Data").Range("E2").PasteSpecial Paste:=xlValues, Transpose:=True 

End Sub 
aussehen sollte
+0

Hallo, ich habe den Code, den Sie haben, verwendet und realisiert, dass mein Leben viel einfacher sein könnte, wenn ich einige der Coulms kombiniert, bedeutet dies, dass ich die letzte Zelle in der Spalte finden und in die nächste Zelle einfügen muss Code Ich kam auf, aber ich bekomme einen Fehler 'ThisWorkbook.Worksheets (" Datenbank "). Bereich (Arbeitsblätter (" Datenbank "). Zellen (" G1 "). Ende (xlDown)). Offset (1 , 0) .PasteSpecial Paste: = xlValues, Transpose: = True' @QHarr – JRR

+0

Überprüfen Sie Ihre Syntax. Sie haben ThisWorkbook.Worksheets ("Datenbank"). Range (Worksheets ("Datenbank"). Zellen ("G1") was falsch ist. Dies sollte etwas wie ThisWorkbook.Worksheets ("Datenbank") sein. Bereich (" G1 ") – QHarr

+0

Auch ich kann nicht sehen, wo dein Pastenbereich definiert ist – QHarr

Verwandte Themen