【发布时间】:2016-02-16 17:02:07
【问题描述】:
我正在尝试编写一个宏,它可以从一张纸上搜索数据并将其复制到另一张纸上。
但现在我遇到了一个问题,因为我想在两次搜索之间复制数据并将多个单元格中的整个数据粘贴到一个单元格中。
例如上图中我的宏:
- 搜索“--------------”和“*****END OF RECORD”
- COPIES 介于两者之间的所有内容,此处为第 29 行和第 30 行以及 A、B、C 列中的示例数据
粘贴将多个单元格 A29、B29、C29 和 A30、B30、C30 中的所有数据粘贴到表 2 中的单个单元格中,例如单元格 E2。
-
此模式在 A 列中再次出现,因此我想搜索下一次出现并执行所有步骤 1、2、3,这次我将其粘贴到 Sheet2 的单元格 E3 中。
下面是代码: 我能够搜索我的模式,但很难在这些搜索模式之间提供对单元格的引用,然后将所有数据复制到一个单元格。
x = 2: y = 2: Z = 7000: m = 0: n = 0
Do
x = x + 1
If ThisWorkbook.Sheets("lic").Range("A" & x) = "---------------------" Then m = x
If ThisWorkbook.Sheets("lic").Range("A" & x) = "****** END OF RECORD" Then n = x
If (n > 0) Then
Do
For i = m To n
ThisWorkbook.Sheets("lic").Range("A" & i + 1).Copy
ThisWorkbook.Sheets("lic").Range("B" & i + 1).Copy
ThisWorkbook.Sheets("lic").Range("C" & i + 1).Copy
'If (n > 0) Then ThisWorkbook.Sheets("Sheet1").Range("E" & y) = ThisWorkbook.Sheets("lic").Range("A" & m + 1, "C" & n - 1): y = y + 1
'If (n > 0) Then ThisWorkbook.Sheets("Sheet1").Range("E" & y).Resize(CopyFrom.Rows.Count).Value = CopyFrom.Value: y = y + 1
Loop While Not x > Z
'Driver's Licence #:Driver's Licence #:Driver's Licence #:
x = 2: y = 2: Z = 7000: counter = 1
Do
x = x + 1
If ThisWorkbook.Sheets("lic").Range("A" & x) = "Driver's Licence #:" Then counter = counter + 1
If (counter = 2) Then ThisWorkbook.Sheets("Sheet1").Range("B" & y) = ThisWorkbook.Sheets("lic").Range("C" & x): y = y + 1: counter = 0
If x = Z Then Exit Sub
Loop
End Sub
【问题讨论】: