Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 基于条件的复制范围_Excel_Vba - Fatal编程技术网

Excel 基于条件的复制范围

Excel 基于条件的复制范围,excel,vba,Excel,Vba,我想写一个宏,只复制一系列有数据的单元格,忽略值为NA 我构建了一个助手工具,以确保从多个来源收集的数据被放置在正确的对应列中,然后从那里复制并粘贴这些列到主工作表中。这些值填充的范围为A3到R,列R中为Vlookup 我想写一个宏,这样我可以按一个启用宏的按钮复制该范围内的单元格,并在Vlookup停止返回值的地方结束。到目前为止,我已经能够编写它,这样它就可以复制到Vlookup的末尾,但它仍然在收集结果,包括R中的公式 目前编写: Sub Copy() Dim ws As Work

我想写一个宏,只复制一系列有数据的单元格,忽略值为
NA

我构建了一个助手工具,以确保从多个来源收集的数据被放置在正确的对应列中,然后从那里复制并粘贴这些列到主工作表中。这些值填充的范围为
A3
R
,列
R
中为
Vlookup

我想写一个宏,这样我可以按一个启用宏的按钮复制该范围内的单元格,并在
Vlookup
停止返回值的地方结束。到目前为止,我已经能够编写它,这样它就可以复制到
Vlookup
的末尾,但它仍然在收集结果,包括
R
中的公式

目前编写:

Sub Copy()
    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")
    ws.Range(ws.[A:R], ws.Cells(Rows.Count, "R").End(xlUp)).Copy
End Sub
单程

  • 使用自动过滤器
  • 过滤掉非
    #N/A
  • 一次性复制过滤的范围
  • 这就是你想要的吗

    Option Explicit
    
    Sub Sample()
        Dim ws As Worksheet
        Dim rng As Range, filteredrng As Range
        Dim lrow As Long
    
        Set ws = Sheet1 '<~~ Change this to the relevant sheet
    
        With ws
            .AutoFilterMode = False
    
            lrow = .Range("R" & .Rows.Count).End(xlUp).Row
    
            Set rng = .Range("A3:R" & lrow)
    
            With rng
               .AutoFilter Field:=18, Criteria1:="<>#N/A"
                Set filteredrng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
            End With
    
            If Not filteredrng Is Nothing Then
                '~~> COPY RANGE CODE HERE
            End If
    
            .AutoFilterMode = False
        End With
    End Sub
    
    选项显式
    子样本()
    将ws设置为工作表
    调光作为范围,过滤器作为范围
    暗淡的光线和长的一样
    
    设置ws=Sheet1'感谢您的回复。我将其插入,它现在正在正确地选择和复制,但是,当我从它正在复制的内容粘贴时,它会将所选单元格和空白单元格粘贴到第104888行。你知道为什么它会这样做而不是只粘贴选定的单元格吗?
    “~~>在这里复制范围代码
    如果你用
    Debug.Print filteredrn.Addres
    替换它,你会看到什么?解决了:我必须在范围代码中添加.End(xlUp)。谢谢你的帮助,我一直在努力解决这个问题。我通常不这么说,但你可能不知道如何将asnwer标记为已解决。不要编辑问题,并在此处键入
    已解决的
    。使用如图所示的正确方法