Excel 搜索列名并复制数据
我的第一个工作簿工作表中有7列,我想将它们复制到第二个工作簿工作表中的相应列中 我需要的列的列号可能会更改。因此,我不想通过诸如w=“B”之类的列来声明变量。相反,我希望搜索名称为“LineID”的列,如果名称与列名匹配,则将数据复制到其他工作簿工作表中的列 第1页中的这些列不整齐,因为它们之间有许多列。列的顺序也会根据输入数据的管理员而改变。因此,我想搜索带有名称的列,并获取下面的数据。然后把它复制到另一张纸上 我通过指定要复制的每个列来复制数据,但如果列发生更改,我必须返回代码并更改列值。相反,如果通过标题来标识列,则会更容易Excel 搜索列名并复制数据,excel,vba,Excel,Vba,我的第一个工作簿工作表中有7列,我想将它们复制到第二个工作簿工作表中的相应列中 我需要的列的列号可能会更改。因此,我不想通过诸如w=“B”之类的列来声明变量。相反,我希望搜索名称为“LineID”的列,如果名称与列名匹配,则将数据复制到其他工作簿工作表中的列 第1页中的这些列不整齐,因为它们之间有许多列。列的顺序也会根据输入数据的管理员而改变。因此,我想搜索带有名称的列,并获取下面的数据。然后把它复制到另一张纸上 我通过指定要复制的每个列来复制数据,但如果列发生更改,我必须返回代码并更改列值。相
我不擅长VBA,非常感谢您提供的任何帮助。您可以将以下代码复制并粘贴到新模块中。它可以放在新工作簿中,也可以放在您要复制到/从中复制的任何一本工作簿中 如内联注释中所述,您需要更新Set wsSrc和Set wsDest行以匹配工作簿和工作表名称 要使其在无需进一步修改的情况下工作,您需要打开两个工作簿(从源复制的工作簿和粘贴到目标的工作簿)。此外,您的标题需要位于第1行
Workbook1 - Sheet 1:
Unique ID (Column D) | Line ID (Column Q) | Date1 (Column AL) | Date2 (Column AN) | Date3 (Column AO)| Date4 (Column AP)| Date5 (Column AQ)
Workbook 2 - Sheet 2:
Unique ID (Column B) | Line ID (Column C) | Date1 (Column E) | Date2 (Column F) | Date3 (Column G)| Date4 (Column H)| Date5 (Column I)
不需要VBA。您可以使用
MATCH
功能确定列;和INDEX
返回该列中的所有行。
Option Explicit
Public Sub CopyData()
' DECLARE VARIABLES
Dim i As Integer ' Counter
Dim j As Integer ' Counter
Dim colsSrc As Integer ' Source worksheet columns
Dim colsDest As Integer ' Destination worksheet columns
Dim rowsSrc As Long ' Source worksheet rows excluding header
Dim wsSrc As Worksheet ' Source worksheet
Dim wsDest As Worksheet ' Destination worksheet
' SET VARIABLES
Set wsSrc = Workbooks("Source.xlsx").Sheets("Sheet1") ' Source worksheet (change Source.xlsx and Sheet1 to match your workbook name and worksheet name)
Set wsDest = Workbooks("Destination.xlsx").Sheets("Sheet1") ' Destination worksheet (change Destination.xlsx and Sheet1 to match your workbook name and worksheet name)
colsSrc = wsSrc.Cells(1, Columns.Count).End(xlToLeft).Column ' Source worksheet columns (assumes header is row 1)
colsDest = wsDest.Cells(1, Columns.Count).End(xlToLeft).Column ' Destination worksheet columns (assumes header is row 1)
rowsSrc = wsSrc.Range("A1").CurrentRegion.Rows.Count - 1 ' Source worksheet rows excluding header (assumes header is row 1
' COPY DATA FROM SOURCE WORKSHEET TO DESTINATION WORKSHEET _
- Compares each column header in your destination workbook to each column in your source workbook _
- If a match is found, copies the column from the source workbook and pastes it into the destination workbook
For i = 1 To colsDest
For j = 1 To colsSrc
If wsSrc.Cells(1, j) = wsDest.Cells(1, i) Then
wsSrc.Cells(2, j).Resize(rowsSrc, 1).Copy wsDest.Cells(2, i)
Exit For
End If
Next j
Next i
End Sub