【问题标题】:Compare 2 columns and highlight new items in second column比较 2 列并突出显示第二列中的新项目
【发布时间】:2021-11-15 03:54:14
【问题描述】:

情况: 我有一个 excel 宏,它将一列数据导入到下一个空闲列中的现有工作表中,它还清除了将在宏完成时设置的前一列的格式(我在这里尝试解决的位) )。

我需要代码将新列中的每个单元格与前一列进行比较,以查看是否匹配,如果不匹配则突出显示该单元格。

问题: 我不断收到类型不匹配错误,或者代码无法运行。我的最新尝试(包括将唯一数据复制到不同的工作表,如果工作的话,这将是一个奖励)如下。

Dim rngCell As Range

For Each rngCell In Range(Cells(2, Worksheets("Data").Columns(LastColumn)), Cells(10000, Worksheets("Data").Columns(LastColumn)))
 'I know hardcoding values is bad, but i did this for testing purposes
    If WorksheetFunction.CountIf(Range(Cells(2, Worksheets("Data").Columns(LastColumn)), Cells(10000, Worksheets("Data").Columns(LastColumn))), rngCell) = 0 Then
        Range("D" & Rows.Count).End(xlUp).Offset(1) = rngCell
    End If
Next

理想结果: 该代码贯穿并突出显示第 1 列中的唯一值(在每天导入新列时使用列索引引用)。 该代码将唯一值复制到另一张表中以方便使用。

提前感谢任何指针或代码。

【问题讨论】:

  • 请说明您的要求 - 对我来说,您并不清楚您想要实现什么:突出显示新项目,复制独特的价值......如果这很清楚,那么为您提供帮助会更容易。
  • 您的问题标题与您在问题文本中的解释以及您显示的代码不匹配。请更好地解释你想要完成什么以及你认为你的代码应该做什么。
  • 您在包含的代码中的哪个位置复制到不同的工作表?我认为包含一些示例数据的图片以及结果应该是什么样子是最简单的。你说你想在第二列中突出显示,但你说的是第 1 列。据我所知,代码中没有设置格式。

标签: excel vba formatting compare


【解决方案1】:

由于您只发布了代码的一部分,我不得不假设您插入和清除格式的部分已经运行良好。 有时您定义一个工作表,有时您不定义,所以我不确定我们在这里使用的是什么工作表。

但为了澄清一下,如果您在“A”列中有数据,然后运行宏将数据粘贴到“B”列中,您是否想要这样的东西:

prevCol = 1
lastCol = 2
Set Rng = Range(Cells(2, prevCol), Cells(100, prevCol))
Set Rng2 = Range(Cells(2, lastCol), Cells(100, lastCol))
For Each rngCell In Rng
    If WorksheetFunction.CountIf(Rng2, rngCell) = 0 Then
        rngCell.Interior.Color = RGB(250, 230, 20)
    End If
Next

在插入新项之前存在的列中的唯一项在哪里被突出显示?

所以最后,也许更像这样:

Sub SubName()
Dim sht As Worksheet
Dim lastCol As Long, lastRow As Long
Set sht = Worksheets("Data") 'or whatever
' Instert column
' clear formatting

lastCol = sht.Cells(2, sht.Columns.Count).End(xlToLeft).Column
lastRow = sht.Cells(sht.Rows.Count, lastCol - 1).End(xlUp).Row

For Each rngCell In Range(Cells(2, lastCol - 1), Cells(lastRow, lastCol - 1))
    If WorksheetFunction.CountIf(Range(Cells(2, lastCol), Cells(lastRow, lastCol)), rngCell) = 0 Then
        rngCell.Interior.Color = RGB(250, 230, 20)
    End If
Next
End Sub

【讨论】:

    猜你喜欢
    • 2012-04-18
    • 1970-01-01
    • 2018-08-08
    • 2019-06-08
    • 2020-12-01
    • 2018-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多