2017-05-25 2 views
0

Ich bin ein Neuling zu diesem VBA/Makro. Ich muss bestimmte Spalten kopieren und in ein anderes Arbeitsblatt einfügen. Ich verwende den Code, der vom vorherigen Thread bereitgestellt wird. Allerdings müssen die Daten in der ersten Zeile eingefügt werden. Derzeit werden die Daten in der zweiten Zeile eingefügt. Unten ist der Code:Wie man bestimmte Spalten von einem Blatt kopiert und in ein anderes Blatt in einem anderen Bereich in der ersten Reihe einfügt?

Sub copypaste() 

Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As 
Worksheet, icol As Long 

Set sheet1 = Worksheets("Sheet1") 
Set sheet2 = Worksheets("Sheet2") 
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row 




For i = 4 To lastrow 
erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row 
sheet2.Cells(erow, 2) = sheet1.Cells(i, 1) 
sheet2.Cells(erow, 3) = sheet1.Cells(i, 2) 
sheet2.Cells(erow, 7) = sheet1.Cells(i, 3) 
sheet2.Cells(erow, 5) = sheet1.Cells(i, 5) 
sheet2.Cells(erow, 4) = sheet1.Cells(i, 6) 
sheet2.Cells(erow, 8) = sheet1.Cells(i, 11) 
sheet2.Cells(erow, 9) = sheet1.Cells(i, 8) 
sheet2.Cells(erow, 13).Value = sheet1.Cells(i, 9).Value 
Next i 

Worksheets("Sheet1").Columns().AutoFit 
Cells(1, 1).Activate 

End Sub 

Die Kopfzeile von Blatt1 muss auch nicht kopiert werden.

Danke. Link from the previous thread. Assistance was given by Tim Wilkinson

Das obige Problem wurde gestern von @ sktneer gelöst. Die Daten wurden erfolgreich in der ersten Zeile eingefügt.

Allerdings, in Bezug auf den gleichen Fall, wie kann ich die gefilterten Daten von Blatt1 kopieren? Ich habe den Autofilter-Code eingegeben, um die Kriterien für den Copypaste-Prozess anzugeben, bin mir aber nicht sicher, ob ich es richtig gemacht habe oder nicht.

Unten ist der eingestellte Code:

sub copypaste() 

Dim lastrow As Integer, erow As Integer, sheet1 As Worksheet, sheet2 As 
Worksheet, lrow As Long 

Set sheet1 = Worksheets("Sheet1") 
Set sheet2 = Worksheets("Sheet2") 

strSearch = "LOCAL" 
lastrow = sheet1.Cells(Rows.Count, 1).End(xlUp).Row 

With sheet1 
AutoFilterMode = False 
lrow = sheet1.Range("L" & .Rows.Count).End(xlUp).Row 

With .Range("L3:L" & lrow) 
     .AutoFilter Field:=1, Criteria1:="=*" & strSearch & "*" 


For i = 4 To lastrow 

If sheet2.Cells(1, 2) = "" Then 
    erow = 1 
Else 
erow = sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row 

End If 
sheet2.Cells(erow, 2) = sheet1.Cells(i, 1) 
sheet2.Cells(erow, 3) = sheet1.Cells(i, 2) 
sheet2.Cells(erow, 7) = sheet1.Cells(i, 3) 
sheet2.Cells(erow, 5) = sheet1.Cells(i, 5) 
sheet2.Cells(erow, 4) = sheet1.Cells(i, 6) 
sheet2.Cells(erow, 8) = sheet1.Cells(i, 11) 
sheet2.Cells(erow, 9) = sheet1.Cells(i, 8) 
sheet2.Cells(erow, 13).Value = sheet1.Cells(i, 9).Value 
Next 

End With 


AutoFilterMode = False 

End With 


Worksheets("Sheet1").Columns().AutoFit 
Cells(1, 1).Activate 

End Sub 

sie im Voraus dankend.

Antwort

0

Vielleicht ...

For i = 4 To lastrow 
    If Sheet2.Cells(1, 2) = "" Then 
     erow = 1 
    Else 
     erow = Sheet2.Cells(Rows.Count, 2).End(xlUp).Offset(1, 0).Row 
    End If 
    Sheet2.Cells(erow, 2) = Sheet1.Cells(i, 1) 
    Sheet2.Cells(erow, 3) = Sheet1.Cells(i, 2) 
    Sheet2.Cells(erow, 7) = Sheet1.Cells(i, 3) 
    Sheet2.Cells(erow, 5) = Sheet1.Cells(i, 5) 
    Sheet2.Cells(erow, 4) = Sheet1.Cells(i, 6) 
    Sheet2.Cells(erow, 8) = Sheet1.Cells(i, 11) 
    Sheet2.Cells(erow, 9) = Sheet1.Cells(i, 8) 
    Sheet2.Cells(erow, 13).Value = Sheet1.Cells(i, 9).Value 
Next i 
+0

Dank @sktneer für eine baldige Antwort. es funktioniert. – hanaa

+0

Gern geschehen Hanaa! Froh, dass ich helfen konnte. – sktneer

+0

@hanaa was ist das? Warum haben Sie das Tag der ausgewählten Antwort entfernt? – sktneer

Verwandte Themen