找到一个值,复制偏移但仅限于一个点

时间:2014-07-15 22:06:37

标签: excel-vba vba excel

在电子表格“评论”的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

2 个答案:

答案 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