在电子表格“评论”的E栏的各个地方,我的变量以“可持续性:”开头(例如,可持续性:a,可持续性:B“)。每次找到一个。我希望它复制同一行但右边两列的单元格。然后我希望它粘贴到另一个工作表(SPSE Tran),从B63开始。每次粘贴时,目标需要偏移1行所以它可以粘贴,直到它找不到“可持续性:”。下面的代码是一个开始,但我被卡住了。
我需要做的第二件事(我甚至不知道从哪里开始)只是迭代执行此操作,直到找到一行“仅用于转换”。这导致了一个新的部分,其中还包括“可持续性:”但我不希望它从那里复制。
谢谢!
Sub SubmitData()
Dim RngA As Range
Dim FirstAd As String
Dim DestAd As Range
With Sheets("Review").Range("E:E")
Set RngA = .Find(What:="Sustainability:", lookat:=xlPart)
Set DestAd = Range("B63")
If Not RngA Is Nothing Then
FirstAd = RngA.Address
Do
Range(Cell, Cell.Offset(0, 2)).Copy _
Destination:=Sheets("SPSE Tran").Range(DestAd)
Set RngA = .FindNext(RngA)
Set DestAd = DestAd.Offset(0, 1)
Loop While Not RngA Is Nothing And RngA.Address <> FirstAd
End If
End With
End Sub
答案 0 :(得分:0)
如何(未经测试):
RngB = where you find "ONLY FOR TRANSITIONS"
RngBRow = RngB.Row
然后将Loop While ..
更改为
Loop While Not RngA Is Nothing And RngA.Address <> FirstAd And RngA.Row < RngBRow
答案 1 :(得分:0)
您的代码已修改为使用过滤器而不是查找循环,然后它会获取所有结果并立即将它们复制到目标:
Sub SubmitData()
Dim ws As Worksheet
Dim rngDest As Range
Dim rngStop As Range
With Sheets("SPSE Tran")
Set rngDest = .Cells(Rows.Count, "B").End(xlUp)
If rngDest.Row < 63 Then Set rngDest = .Range("B63")
End With
Set ws = Sheets("Review")
Set rngStop = ws.Columns("A").Find("ONLY FOR TRANSITIONS", , xlValues, xlPart)
With ws.Range("E1:E" & rngStop.Row)
.AutoFilter 1, "Sustainability:*"
.Offset(1, 2).Copy rngDest
.AutoFilter
End With
End Sub