excel - 这个 VBA 重复标记会更好吗?
问题描述
编写此 VBA 脚本只是为了扫描电子表格并通过填充其背景框来格式化重复项。只是好奇这段代码是否可以更有效。我一直在将此脚本用于多个 excel 文件,其中一些更改略有不同(因此未使用 colNum)。
我尝试过使用 Range,但在移动它并将其与以前的单元格进行比较时遇到了一些困难。
Private Sub MarkDupes()
Worksheets("Test").Activate
Dim rowNum As Long, colNum As Long, rowBelow As Long
'Following loop searches the predetermined column for values
For rowNum = 2 To 1206
rowBelow = rowNum + 1
If Cells(rowNum, 1) = Cells(rowBelow, 1) Then
'38 = salmon
Cells(rowNum, 1).Interior.ColorIndex = 38
Cells(rowBelow, 1).Interior.ColorIndex = 38
End If
Next rowNum
MsgBox "All Done"
End Sub
解决方案
这应该更有效:
Sub Tester()
MarkDupes ActiveSheet.Range("A2:A14")
End Sub
Private Sub MarkDupes(rng As Range)
Const SHADE As Long = 38
Dim rowNum As Long, cv, n As Long, v, rStart As Long, arr
arr = rng.Value
cv = Chr(0) 'a non-value
For rowNum = 1 To UBound(arr, 1)
v = arr(rowNum, 1)
If v <> cv Then
If n > 1 Then rng.Cells(rStart).Resize(n, 1).Interior.ColorIndex = SHADE
rStart = rowNum
n = 1
cv = v
Else
n = n + 1
End If
Next rowNum
If n > 1 Then rng.Cells(rStart).Resize(n, 1).Interior.ColorIndex = SHADE
End Sub
根据您要如何处理空白(即空是否为“值”),需要进行一些修改
推荐阅读
- python - 将 Pytorch 模型 .pth 转换为 onnx 模型
- swift - Swift - 在同一位置有 2 个注释时不去集群
- django - 在 TemplateView Django 中使用 POST 请求发送数据
- c++ - 大端和小端的概念
- python - 这两个id怎么一样?
- javascript - html5画布移动元素
- sql - 在 SQL 查询中需要帮助以获取最近创建的带有状态的作业记录
- java - TomEE 7 Embedded - 将所有流量重定向到 HTTPS
- java - 根据Android中另一个Preference的值删除Preference
- r - 在 R 中使用“唯一值”替换进行采样