Excel 匹配两张图纸之间的标题并复制列数据

Excel 匹配两张图纸之间的标题并复制列数据,excel,vba,Excel,Vba,我有两张表,表1和表2,标题名称相同 标题名称的顺序不同 表2的标题多于表1 活页1的标题位于C4:AG4上 表2的标题位于F6:EK6上 我想在工作表之间匹配标题名称,并将每列的数据和公式从工作表1复制到工作表2的相应列 Sub-Oval4\u单击() 将ws设置为工作表:设置ws=ThisWorkbook.Sheets(“Sheet1”)包含数据的工作表 暗LRow与长LRow相同,与射程相同 设置Find=ws.Range(“C4:AG4”).Find(“*发票号”)”头名称以搜索 如

我有两张表,表1和表2,标题名称相同

  • 标题名称的顺序不同
  • 表2的标题多于表1
  • 活页1的标题位于C4:AG4上
  • 表2的标题位于F6:EK6上
我想在工作表之间匹配标题名称,并将每列的数据和公式从工作表1复制到工作表2的相应列

Sub-Oval4\u单击()
将ws设置为工作表:设置ws=ThisWorkbook.Sheets(“Sheet1”)包含数据的工作表
暗LRow与长LRow相同,与射程相同
设置Find=ws.Range(“C4:AG4”).Find(“*发票号”)”头名称以搜索
如果找不到,那就什么都没有了
LRow=ws.Cells(ws.Rows.Count,Found.Column).End(xlUp).Row
范围(ws.Cells(7,find.Column),ws.Cells(LRow,find.Column)).Copy
'要粘贴数据的工作表
ActiveWorkbook.Sheets(“Sheets2”).Range(“H7”).Paste特殊XLPaste公式
如果结束
端接头
我能够将数据逐个复制到Sheet2


因为我在Sheet1上有大约30个列标题,有没有办法添加一个循环来复制所有数据?

这实际上只是使用
应用程序.WorksheetFunction.Match()
获取要粘贴数据的目标列的一个例子。类似于以下的操作可以做到这一点:

Option Explicit
Dim SourceHeader As Range, DestHeader As Long, LastRow As Long, myCol As Long, myRow As Long
Sub CopyUsingHeaders()

For Each SourceHeader In Sheet1.Range("C4:AG4")
      
    myCol = SourceHeader.Column
    myRow = SourceHeader.Row
    
    With Sheet1
    LastRow = .Cells(.Rows.Count, myCol).End(xlUp).Row
    End With
    
    With Sheet2
    DestHeader = Application.WorksheetFunction.Match(SourceHeader, Sheet2.Range("A6:EK6"), 0)
    End With
    
    Sheet1.Range(Sheet1.Cells(myRow, myCol), Sheet1.Cells(LastRow, myCol)).Copy _
    Sheet2.Cells(7, DestHeader)

Next

End Sub