2017-07-03 19 views
1

我有兩個工作簿,我想要的是從一個excel複製列到另一個。 在專欄中,我想從頭部至底部 由於以下選擇數據,我的頭USER是在某處B14,所以我用.Find(什麼:=「用戶」)找到並將其存儲到aCell中。在excel中選擇一個列,但從所需的位置

但是,當我將它複製到另一個excel中時,它也會選擇不需要的B1到B13。

我只想從頭到底選擇數據(B14到B80)並將它粘貼到另一個Excel中作爲A1到A66。

Dim x As Workbook 

Dim y As Workbook 

Dim ws As Worksheet 

Set x = Workbooks.Open("C:\file1.xls") 

Dim aCell As Range 


Set aCell = x.Sheets("file").Range("B1:B1000").Find(What:="User", LookIn:=xlValues,LookAt:=xlWhole, _ 
              MatchCase:=False, SearchFormat:=False) 


Set y = Workbooks.Open("C:\file2.xls) 

aCell.EntireColumn.Copy 

y.Sheets("abc").Range("A1:A1000").PasteSpecial 

End Sub 
+0

而不是複製整列(其中自然包括行1至13) ,爲什麼不復制'x.Sheets(「file」)。範圍(aCell,x.Sheets(「file」)。Cells(x.Sheets(「file」).Rows.Count,aCell.Column).End xlUp))'? – YowE3K

+0

爲了使它更容易工作,你還應該'Dim sht as Worksheet'和'Set sht = x.Sheets(「file」)''。 – UGP

回答

2

如果你不想複製EntireColumn,只需複製你感興趣的範圍:

Dim x As Workbook 
Dim y As Workbook 
Dim ws As Worksheet 
Dim aCell As Range 

Set x = Workbooks.Open("C:\file1.xls") 
With x.Sheets("file") 
    Set aCell = .Range("B1:B1000").Find(What:="User", _ 
             LookIn:=xlValues, _ 
             LookAt:=xlWhole, _ 
             MatchCase:=False, _ 
             SearchFormat:=False) 

    'Check that header exists 
    If aCell Is Nothing Then Exit Sub 

    Set y = Workbooks.Open("C:\file2.xls") 
    .Range(aCell, .Cells(.Rows.Count, aCell.Column).End(xlUp)).Copy _ 
               y.Sheets("abc").Range("A1") 
End With 
+0

這一個解決我的問題:) Thanx很多,YowE3K –