【发布时间】:2019-11-11 00:13:35
【问题描述】:
我需要将数据行从一个工作表复制到另一个工作表。但我必须更改列的顺序。例如来自A,B,C 列E,L,J 中的数据等等。我已经研究了一个解决方案,下面的代码希望能显示我想要做什么。
有没有更简洁的方法来复制数据?我的版本在执行时很慢。
如何在没有空行的情况下复制target worksheet 中的数据?
Sub KopieZeilenUmkehren()
Dim Zeile As Long
Dim ZeileMax As Long
Dim n As Long
With Sheets("Artikel")
ZeileMax = .UsedRange.Rows.Count
n = 1
For Zeile = 2 To ZeileMax
If .Cells(Zeile, 1).Value = "Ja" Then
.Range("A" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("E" & Zeile)
.Range("B" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("L" & Zeile)
.Range("C" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("J" & Zeile)
.Range("D" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("I" & Zeile)
.Range("E" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("H" & Zeile)
.Range("F" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("G" & Zeile)
.Range("G" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("F" & Zeile)
.Range("H" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("A" & Zeile)
.Range("I" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("D" & Zeile)
.Range("J" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("C" & Zeile)
.Range("K" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("B" & Zeile)
.Range("L" & Zeile).Copy Destination:=Worksheets("ArtikelNeu").Range("K" & Zeile)
n = n + 1
End If
Next Zeile
End With
End Sub
【问题讨论】:
-
没有空行是什么意思?此代码将覆盖目标单元格中的任何内容。
-
使用
Application.Index函数的高级可能性发布了您的问题的解决方案,并解释了为什么您会得到包括空行在内的所有行。 - 作为新的贡献者,请允许我对您发表评论:如果您觉得有帮助,请随时通过标记绿色复选标记来接受我的帖子。