Excel VBA 循环遍历 2 列,只复制符合条件的一个范围的单元格

帕特里克·S

我的问题:

我想遍历一个范围,每当它找到一个彩色单元格时,它应该将左边的单元格复制到它右边的单元格。然后将其粘贴到另一个工作表中。

我的名为“Compare”的工作表比较了两组数据,而 FormatConditions 作为 xlUniqueValues 应用......这两组数据应该包含相同的数据,但有时会有一些不在另一个范围内。我有兴趣用我的循环查找这些单元格,然后在满足条件的情况下进行处理。

我的代码不会遍历单元格并向我返回此消息:

运行时错误“1004”:对象“WorksheetFunction”的方法“CountIfs”失败

“比较”表中部分数据的截图:

工作表“比较”的屏幕截图

我的代码:

    Sub LoopForCondFormatCells()

    Dim sht3, sht4 As Worksheet
    Dim ColB, ColG, ColBG c As Range
    Set sht3 = Sheets("Compare")
    Set sht4 = Sheets("Print ready")
    Set ColG = sht3.Range("B3:B88")
    Set ColB = sht3.Range("G3:G86")


    HosKvik = sht4.Columns("B").Find("Hos Kvik, men ikke bogføring", Lookat:=xlWhole).Address(False, False, xlA1)
    HosKvikOff = sht4.Range(HosKvik).Offset(1, 0).Address(False, False, xlA1)
    Set HosKvikOffIns = sht4.Range(HosKvikOff).Offset(1, -1)    
    ColBG1 = ColB & "," ColG
    Set ColBG = Range(ColBG1)
'In the following For Each strings, I would like it to look in the range ColBG, _
but it should only return the value it finds in ColB... _
But I don't know how to write the code to do so
For Each c In ColB.Cells
    If Not IsEmpty(c) Then
        n = Application.WorksheetFunction.CountIfs(ColBG, c) 'Error here
        If n = 1 Then
            c.Offset(0, -1).Resize(1, 3).Copy
            HosKvikOffIns.PasteSpecial xlPasteAll
            Set HosKvikOffIns = HosKvikOffIns.Offset(1, 0)
        End If
    End If
Next

目标:

我希望宏遍历单元格,并找到任何具有 FormatConditions 类型“xlUniqueValues”的单元格。每当遇到 FormatConditions 类型为“xlUniqueValues”的单元格时,它应该执行以下步骤:

For Each c In ColB.Cells
    If Not IsEmpty(c) Then
        n = Application.WorksheetFunction.CountIfs(ColBG, c) 'Error here
        If n = 1 Then
            c.Offset(0, -1).Resize(1, 3).Copy
            HosKvikOffIns.PasteSpecial xlPasteAll
            Set HosKvikOffIns = HosKvikOffIns.Offset(1, 0)
        End If
    End If
Next

我应该在“If c Is”行中写什么来让宏执行我想要它做的事情?我什至可以循环两个不同的范围,并且只返回 G 范围内的任何 xlUniqueValue 吗?

李戴

Countif 的范围不正确。

Sub LoopForCondFormatCells()

    Dim sht3 As Worksheet, sht4 As Worksheet
    Dim ColB As Range, ColG As Range, ColBG As Range, c As Range
    Dim Wf As WorksheetFunction
    Dim vR() As Variant
    Dim k As Long, j As Integer

    Set Wf = WorksheetFunction

    Set sht3 = Sheets("Compare")
    Set sht4 = Sheets("Print ready")

    Set ColG = sht3.Range("B3:B88")
    Set ColB = sht3.Range("G3:G86")
    'ColBG1 = ColB & "," ColG
    'Set ColBG = Union(ColG, ColB)
'In the following For Each strings, I would like it to look in the range ColBG, _
but it should only return the value it finds in ColB... _
But I don't know how to write the code to do so
For Each c In ColB.Cells
    If Not IsEmpty(c) Then
        With Wf
            n = .CountIfs(ColG, c) 'Error here
            If n = 0 Then
                k = k + 1
                ReDim Preserve vR(1 To 3, 1 To k)
                For j = 1 To 3
                    vR(j, k) = c.Offset(0, j - 2)
                Next j
            End If
        End With
    End If
Next
sht4.Range("a1").Resize(k, 3) = Wf.Transpose(vR) '<~~The unique values  are written below cell a1 in Sheet 4.
End Sub

上面使用数组更快,下面是如何复制范围。

Sub LoopForCondFormatCells()

    Dim sht3 As Worksheet, sht4 As Worksheet
    Dim ColB As Range, ColG As Range, ColBG As Range, c As Range
    Dim Wf As WorksheetFunction
    Dim vR() As Variant
    Dim k As Long, j As Integer
    Dim HosKvikOffIns As Range '<~~Declare a variable

    Set Wf = WorksheetFunction

    Set sht3 = Sheets("Compare")
    Set sht4 = Sheets("Print ready")

    Set ColG = sht3.Range("B3:B88")
    Set ColB = sht3.Range("G3:G86")

    Set HosKvikOffIns = sht4.Range("a1") '<~~ First, set the varialble
For Each c In ColB.Cells
    If Not IsEmpty(c) Then
        With Wf
            n = .CountIfs(ColG, c) 'Error here
            If n = 0 Then
                c.Offset(0, -1).Resize(1, 3).Copy HosKvikOffIns
                Set HosKvikOffIns = HosKvikOffIns.Offset(1, 0)
            End If
        End With
    End If
Next

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Excel VBA 循环遍历命名范围

来自分类Dev

在Excel VBA中循环遍历单元格值

来自分类Dev

EXCEL VBA 循环遍历单元格并有条件地连接

来自分类Dev

如何通过 VBA 仅循环遍历 Excel 工作表中一列中的非空单元格?

来自分类Dev

循环遍历工作表中的Excel VBA范围对象错误

来自分类Dev

循环遍历行和列 Excel 宏 VBA

来自分类Dev

从传递的列/行/范围VBA Excel中获取一个单元格

来自分类Dev

从传递的列/行/范围VBA Excel中获取一个单元格

来自分类Dev

Regex-Replace 可以在一个范围内运行而不是在 Excel 中循环遍历单元格吗?

来自分类Dev

excel vba 循环通过范围并复制到单个单元格

来自分类Dev

Excel VBA循环-将单元格从一列复制到另一列

来自分类Dev

如何使用excel vba从特定单元格复制并将其粘贴到另一个范围

来自分类Dev

Excel VBA:选定的单元格循环

来自分类Dev

Excel VBA:查找 Excel 表格中的最后一个空单元格,而不是范围

来自分类Dev

Excel / VBA-遍历范围

来自分类Dev

使用vba比较excel中的2个单元格

来自分类Dev

循环遍历不同文件中的命名范围并在 VBA Excel 中创建 jpg

来自分类Dev

Excel VBA宏复制单元格并粘贴到另一个

来自分类Dev

Excel VBA:调用LostFocus()后获取上一个单元格的范围

来自分类Dev

Excel VBA选择每隔一个单元格

来自分类Dev

Excel VBA宏将多个excel中使用的单元格复制到一个excel中

来自分类Dev

Excel VBA工作表更改,输入一个范围而不是一个单元格

来自分类Dev

Excel VBA-搜索范围-如果单元格包含文本,则复制单元格-粘贴偏移量2,1

来自分类Dev

Excel 2013:VBA将公式从一个单元格复制到下一个单元格

来自分类Dev

vba excel:如何将字符从一个单元格复制到另一个单元格

来自分类Dev

Excel-VBA循环-从单元格复制公式,粘贴到单元格中,然后复制特殊粘贴

来自分类Dev

Excel VBA数组范围的循环

来自分类Dev

Excel VBA 循环动态范围

来自分类Dev

循环遍历 Excel 工作表中的单元格

Related 相关文章

  1. 1

    Excel VBA 循环遍历命名范围

  2. 2

    在Excel VBA中循环遍历单元格值

  3. 3

    EXCEL VBA 循环遍历单元格并有条件地连接

  4. 4

    如何通过 VBA 仅循环遍历 Excel 工作表中一列中的非空单元格?

  5. 5

    循环遍历工作表中的Excel VBA范围对象错误

  6. 6

    循环遍历行和列 Excel 宏 VBA

  7. 7

    从传递的列/行/范围VBA Excel中获取一个单元格

  8. 8

    从传递的列/行/范围VBA Excel中获取一个单元格

  9. 9

    Regex-Replace 可以在一个范围内运行而不是在 Excel 中循环遍历单元格吗?

  10. 10

    excel vba 循环通过范围并复制到单个单元格

  11. 11

    Excel VBA循环-将单元格从一列复制到另一列

  12. 12

    如何使用excel vba从特定单元格复制并将其粘贴到另一个范围

  13. 13

    Excel VBA:选定的单元格循环

  14. 14

    Excel VBA:查找 Excel 表格中的最后一个空单元格,而不是范围

  15. 15

    Excel / VBA-遍历范围

  16. 16

    使用vba比较excel中的2个单元格

  17. 17

    循环遍历不同文件中的命名范围并在 VBA Excel 中创建 jpg

  18. 18

    Excel VBA宏复制单元格并粘贴到另一个

  19. 19

    Excel VBA:调用LostFocus()后获取上一个单元格的范围

  20. 20

    Excel VBA选择每隔一个单元格

  21. 21

    Excel VBA宏将多个excel中使用的单元格复制到一个excel中

  22. 22

    Excel VBA工作表更改,输入一个范围而不是一个单元格

  23. 23

    Excel VBA-搜索范围-如果单元格包含文本,则复制单元格-粘贴偏移量2,1

  24. 24

    Excel 2013:VBA将公式从一个单元格复制到下一个单元格

  25. 25

    vba excel:如何将字符从一个单元格复制到另一个单元格

  26. 26

    Excel-VBA循环-从单元格复制公式,粘贴到单元格中,然后复制特殊粘贴

  27. 27

    Excel VBA数组范围的循环

  28. 28

    Excel VBA 循环动态范围

  29. 29

    循环遍历 Excel 工作表中的单元格

热门标签

归档