首页 > 解决方案 > 将一张表中的数据范围作为值复制到另一张表中,直到出现特定值

问题描述

在下面的代码中,我需要从“合格输出”中复制一个范围,并将其作为值插入“输出”中。

它有效,但我需要代码在 A 列开始包含值零 (0) 时停止复制范围。

有没有聪明的方法来做到这一点?希望你们能帮助我。

Sub Copy_to_output()

Worksheets("Output for qualifying").Range("A2:A400").Copy

Worksheets("Output").Range("A9").PasteSpecial Paste:=xlPasteValues


Worksheets("Output for qualifying").Range("B2:H400").Copy

Worksheets("Output").Range("E9").PasteSpecial Paste:=xlPasteValues


Worksheets("Output for qualifying").Range("J2:K400").Copy

Worksheets("Output").Range("L9").PasteSpecial Paste:=xlPasteValues


Worksheets("Output for qualifying").Range("Q2:Y400").Copy

Worksheets("Output").Range("N9").PasteSpecial Paste:=xlPasteValues


Application.CutCopyMode = False


End Sub

标签: excelvba

解决方案


在您的情况下,我唯一能想到的就是使用Find方法。

因此,在您的代码中,找到第一个0值,然后将其用作副本的行引用。这绝不是一种干净的操作方式,但会完成任务。

Sub Copy_to_output()

    Dim lZeroRow As Long

    lZeroRow = Worksheets("Output for qualifying").Range("A:A").Find(What:="0", LookIn:=xlValues, LookAt:=xlWhole).Row

    Worksheets("Output for qualifying").Range("A2:A" & lZeroRow).Copy

    Worksheets("Output").Range("A9").PasteSpecial Paste:=xlPasteValues


    Worksheets("Output for qualifying").Range("B2:H" & lZeroRow).Copy

    Worksheets("Output").Range("E9").PasteSpecial Paste:=xlPasteValues


    Worksheets("Output for qualifying").Range("J2:K" & lZeroRow).Copy

    Worksheets("Output").Range("L9").PasteSpecial Paste:=xlPasteValues


    Worksheets("Output for qualifying").Range("Q2:Y" & lZeroRow).Copy
 
    Worksheets("Output").Range("N9").PasteSpecial Paste:=xlPasteValues


    Application.CutCopyMode = False


End Sub

推荐阅读