2017-07-03 14 views
1

私は2つのワークブックを持っていますが、私が望むのは、あるExcelから別のExcelに列をコピーすることです。 この欄には、ヘッダーの下から下までのデータを選択したいと考えています 私のヘッダーUSERはB14のどこかにあるので、.Find(What:= "User")ヘッダに格納してセルに格納する。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

ではなく(当然13に行1が含まれます)列全体をコピーします(xSheets( "file")。Rows.Count、aCell.Column).End(xSheets( "file"))。 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 a lot、YowE3K –

関連する問題