excel - 比较 2 列并突出显示第二列中的新项目
问题描述
情况:我有一个 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 列中的唯一值(在每天导入新列时使用列索引引用)。该代码将唯一值复制到另一张表以方便使用。
提前感谢任何指针或代码。
解决方案
由于您只发布了代码的一部分,我不得不假设您插入和清除格式的部分已经运行良好。有时您定义一个工作表,有时您不定义,所以我不确定我们在这里使用的是什么工作表。
但为了澄清一下,如果您在“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
推荐阅读
- oauth-2.0 - 迁移到 LinkedIn APIs V2 或更新 LinkedIn 权限设置
- java - Java 8中通过多个匹配值获取列表的对象
- javascript - 为什么 CSS 的动画属性在 Vue.js 中不起作用?
- javascript - 如何在 Chartjs 上隐藏多个图例?
- regex - 反转这个特定的正则表达式
- javascript - 显示在 SendBird 频道聊天中发送的图像的缩略图
- tensorflow - 为文本分类添加额外维度
- c++builder - 如何在 ThorzScrollBox 中滚动 TListview?
- c# - 将 MultiPartFileData 文件发布到函数
- c - 在c中使用scanf语句读取一组字母