【发布时间】:2020-09-22 15:59:03
【问题描述】:
我有两张纸(第一张和第二张)。 Sheet1 是 sheet2 的子集。我编写了一个宏来比较两张表的标题,然后如果匹配,则将表 1 中的所有内容复制到表 2。 下一个要求是,我在 Sheet1 中有一个键列,我现在需要根据键列值将表 1 的内容粘贴到表 2、表 3、表 4。 请在附件中找到详细的屏幕截图,也请在 Stack-overflow 中找到我在你们的帮助下编写的代码。 我是新手,需要你的帮助。 Image.Please Click
代码:
Private Sub CommandButton3_Click()
Application.ScreenUpdating = False
Dim lastrow As Long, header As Range, foundHeader As Range, lCol As Long, srcWS , desWS1 As Worksheet
Set srcWS = Sheets("Sheet1")
Set desWS1 = Sheets("Sheet2")
lastrow = srcWS.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
lCol = desWS1.Cells(1, Columns.count).End(xlToLeft).Column
For Each header In desWS1.Range(desWS1.Cells(1, 1), desWS1.Cells(1, lCol))
Set foundHeader = srcWS.Rows(2).Find(header, LookIn:=xlValues, lookat:=xlWhole)
If Not foundHeader Is Nothing Then
srcWS.Range(srcWS.Cells(2, foundHeader.Column), srcWS.Cells(lastrow, foundHeader.Column)).Copy desWS1.Cells(1, header.Column)
End If
Next header
lCol = desWS2.Cells(1, Columns.count).End(xlToLeft).Column
**' I am stuck here. Unable to think beyond these two lines after applying the filter**
**Sheets("Sheet1").Cells(1, 1).AutoFilter Field:=7, Criteria1:="Yellow"
Sheets("Sheet1").Cells(1, 1).SpecialCells(xlCellTypeVisible).Select**
For Each header In desWS2.Range(desWS2.Cells(1, 1), desWS2.Cells(1, lCol))
Set foundHeader = srcWS.Rows(2).Find(header, LookIn:=xlValues, lookat:=xlWhole)
If Not foundHeader Is Nothing Then
srcWS.Range(srcWS.Cells(2, foundHeader.Column), srcWS.Cells(lastrow, foundHeader.Column)).Copy desWS2.Cells(1, header.Column)
End If
Next header
Application.ScreenUpdating = True
End Sub
非常感谢您的时间和帮助。
【问题讨论】:
-
你的问题到底是什么?
-
哎呀!抱歉,如果我的问题对您没有任何意义。请参考截图。我需要从 sheet1 复制行(基于键)并粘贴到 sheet2 的适当列下。