繁体   English   中英

将excel行从一个工作表复制到另一个工作表

[英]Copying excel row from one sheet to another

我将数据从一个工作表复制到另一个工作表,从源范围(Q5:AIxxx)到目标范围(C6:Uxxx)

我的VBA代码以单元格开头并循环到列的末尾以完成复制该列的数据:

Set s = Worksheets("Source")
Set d = Worksheets("Destination")

Dim i As Integer, j As Integer

j = 6
For i = 5 To 1500
   If s.Cells(i, 1).Value = "a" Or s.Cells(i, 1).Value = "b" Then
      d.Cells(j, 3).Value = s.Cells(i, 17).Value       
      j = j + 1
   End If
Next i

我有> 20列移动,有没有办法可以立即复制行? 这样的事情:

d.Cells(j, 3:21).Value = s.Cells(i, 17:35).Value     

目前,我必须指定每一列:

 d.Cells(j, 3).Value = s.Cells(i, 17).Value    'column 1
 d.Cells(j, 4).Value = s.Cells(i, 18).Value    'column 2
 d.Cells(j, 5).Value = s.Cells(i, 19).Value    'column 3
 etc

您可以使用:

.Range(<your_range>).copy

比如做:

Activesheet.Range("A1:B10").Copy

然后用你想要的任何地方粘贴.Paste

ActiveSheet.Paste Destination:=Worksheets(2).Range("D1:D5")

它是vba中的内置功能。 另见复制范围:

https://msdn.microsoft.com/en-us/library/office/ff837760.aspx

对于粘贴: https//msdn.microsoft.com/en-us/library/office/ff821951.aspx

你可以做到

    d.range(d.cells(j,3), d.cells(j,21)).copy
 s.range(s.cells(i,17), s.cells(i,35)).pastespecial xlvalues

使用范围可以使它更容易:

Dim s As Range, d As Range
Set d = Worksheets("Destination").Cells(6, 15) ' notice the column 15

For Each s in Worksheets("Source").Range("A5:A1500")
   If s = "a" Or s = "b" Then
      d(,3) = s(,3)
      d(,4) = s(,4)
      ' or d(,3).Resize(,19) = s(,3).Resize(,19) ' .Value optional
      Set d = d.Offset(1) ' move to next row
   End If
Next 

没有VBA,有更简单的方法可以做到这一点。 例如Power Query,PivotTable,Copy Link和Table Filter,Data选项卡> From Access等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM