excel - 如果命名范围 COUNTIF 中存在列中的任何单元格,则复制行

标签 excel vba compiler-errors countif named-ranges

对 VBA 非常陌生,但确实需要有关此代码的帮助。

因此,如果名称在我的命名范围内(在 Lookuptab 表中),我想复制 Worksheet1 中 L 列中的任何单元格。

到目前为止,我有复制和粘贴的代码,它工作正常,但自从放入 countif标准,我得到错误 compile error sub function not defined
请帮忙!

谢谢,

我的代码如下:


a = Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row

For i = 2 To a

    If CountIf(Sheets("Lookup").Range("Vendor_Lookup"), Sheets("Sheet1").Cells(i, 12).Value) > 0 Then

        Worksheets("Sheet1").Rows(i).Copy

        Worksheets("Sheet2").Activate

        b = Worksheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row
        Worksheets("Sheet2").Cells(b + 1, 1).Select

        ActiveSheet.Paste

        Worksheets("Sheet1").Activate

End If

Next

Application.CutCopyMode = False


End Sub

最佳答案

CountIf不是 VBA 原生的。您必须通过访问工作表功能
Application.WorksheetFunction.CountIf(......
其他几点注意事项:

  • 无需Activate根据 this post 的任何内容
  • 在循环内复制/粘贴可能非常耗时。考虑使用 Union收集目标行
  • 而不是使用 CountIf , 你可以使用 Range.Find坚持使用原生 VBA 函数

  • 结合所有这些会产生如下内容:
    Sub SHELTER_IN_PLACE()
    
    Dim ws1 As Worksheet: Set ws1 = ThisWorkbook.Sheets("Sheet1")
    Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("Sheet2")
    
    Dim lr As Long, i As Long
    Dim Target As Range, Found As Range
    
    lr = ws1.Range("A" & ws1.Rows.Count).End(xlUp).Row
    
    For i = 2 To lr
        Set Found = Sheets("Lookup").Range("Vendor_Lookup").Find(ws1.Range("A" & i))
    
            If Not Found Is Nothing Then
                If Not Target Is Nothing Then
                    Set Target = Union(Target, ws1.Range("A" & i))
                Else
                    Set Target = ws1.Range("A" & i)
                End If
            End If
    
        Set Found = Nothing
    Next i
    
    If Not Target Is Nothing Then
        lr = ws2.Range("B" & ws2.Rows.Count).End(xlUp).Offset(1).Row
        Target.EntireRow.Copy
        ws2.Range("A" & lr).PasteSpecial xlPasteValues
    End If
    
    End Sub
    

    关于excel - 如果命名范围 COUNTIF 中存在列中的任何单元格,则复制行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60839053/

    相关文章:

    Excel VBA - 自动输入密码

    mysql - VBA 运行时错误 '-2147467259 (80004005)

    vba - 以编程方式分配 Bang 参数?

    android - NDK错误: “can' t resolve `.data.rel.ro.local' ”

    java - 使用JSSC从串行端口读取。我如何使用输入流

    swift - 如何从自定义错误访问 Swift 属性?

    c# - Excel判断单元格的数据类型是DateTime还是Int

    c# - 无法创建 VSTO Excel 工作簿项目

    vba - 我尝试在 VBA 中编写代码以将此公式插入单元格时一直失败

    excel - 使用 Powershell 将 CSV 数据插入 Excel 中下一个可用的相应单元格