我有3个不同的Excel工作表,分别称为:wsOrigin1,wsOrigin2,wDestiny。我使用此代码来定位和复制wsDestiny中wsOrigin1和wsOrigin2的整个列,该列位于wsOrigin1和wsOrigin2的第一行,即“此处”的列,然后将wsOrigin1列复制到wsDestiny工作表中找到wsOrigin2的列下,但是我遇到的问题是我这样做的代码,这是在编写复制了wsOrigin2的列之后进行的,而我首先复制了wsOrigin1。这是我使用的代码:
For c = 1 To 13
If wsOrigin1.Cells(1, c).Value = "here" Then
For cc = cc + 1 To 13
' fila , columna
With wsOrigin1.Columns(c).CurrentRegion
wsDestiny.Columns(cc).End(xlDown) _
.Offset(1, 0).Resize(.Rows.Count).End(xlDown) = .Columns(c).Value
End With
Exit For
Next cc
End If
Next c
For c2 = 1 To 13
If wsOrigin2.Cells(1, c2).Value = "here" Then
For cc2 = cc2 + 1 To 13
' fila , columna
With wsOrigin2.Columns(c2).CurrentRegion
wsDestiny.Columns(cc2).End(xlUp) _
.Offset(1, 0).Resize(.Rows.Count) = .Columns(c2).End(xlUp).Value
End With
Exit For
Next cc2
End If
Next c2
For c = 1 To 13
If wsOrigin1.Cells(1, c).Value = "here" Then
For cc = cc + 1 To 13
With wsOrigin1.Columns(c).CurrentRegion
wsDestiny.Cells(Rows.Count, cc).End(xlUp) _
.Offset(1, 0).Resize(.Rows.Count) = .Columns(c).Value
End With
Exit For
Next cc
End If
Next c
For c2 = 1 To 13
If wsOrigin2.Cells(1, c2).Value = "here" Then
For cc2 = cc2 + 1 To 13
With wsOrigin2.Columns(c2).CurrentRegion
wsDestiny.Cells(Rows.Count, cc2).End(xlUp) _
.Offset(1, 0).Resize(.Rows.Count) = .Columns(c2).Value
End With
Exit For
Next cc2
End If
Next c2
示例结果:
wsOrigin1:
A B C
1 here here
2 bla ble bli
3 bla ble bli
4 bla ble bli
wsOrgin2:
A
1 here
2 blo
3 blo
4 blo
Result
code compile
wsDestiny:
A B
1 here here
2 bla bli
3 bla bli
4 bla bli
5 here
6 blo
7 blo
8 blo