excel - 如何识别具有不同值的一个值的重复项
问题描述
我想编写一个宏来识别 excel 中具有不同值的一个值的重复。
如果您看到下图,则有 2 个集群具有不同的州和城市,以黄色突出显示。我希望这些簇 # 应该出现在 A 列的 Sheet2 中。
解决方案
你可以试试:
Option Explicit
Sub test()
Dim i As Long, y As Long, w As Long, LastRow As Long, LastRow2 As Long
Dim Cluster1 As String, Cluster2 As String, FullDesc1 As String, FullDesc2 As String
Dim rng As Range
Dim Diff As Boolean
'Change sheet name if needed
With ThisWorkbook.Worksheets("Sheet1")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
Set rng = .Range("A2:A" & LastRow)
For i = LastRow To 2 Step -1
If .Range("A" & i).Value <> "" Then
Cluster1 = .Range("A" & i).Value
If WorksheetFunction.CountIf(rng, Cluster1) > 1 Then
FullDesc1 = Cluster1 & "_" & .Range("B" & i).Value & "_" & .Range("C" & i).Value
Diff = False
For y = LastRow To 2 Step -1
If y < i Then
Cluster2 = .Range("A" & y).Value
FullDesc2 = Cluster2 & "_" & .Range("B" & y).Value & "_" & .Range("C" & y).Value
If (Cluster1 = Cluster2) And (FullDesc1 <> FullDesc2) Then
Diff = True
Exit For
Else
Diff = False
End If
End If
Next y
If Diff = True Then
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
For w = LastRow To 2 Step -1
If .Range("A" & w).Value = Cluster1 Then
LastRow2 = ThisWorkbook.Worksheets("Sheet2").Cells(ThisWorkbook.Worksheets("Sheet2").Rows.Count, "A").End(xlUp).Row
.Range("A" & w & ":C" & w).Cut ThisWorkbook.Worksheets("Sheet2").Range("A" & LastRow2 + 1)
.Rows(w).EntireRow.Delete
End If
Next w
End If
End If
End If
Next i
End With
End Sub
推荐阅读
- android-recyclerview - 在android recyclerview中滑动加载相同的图像给定不同的url - Java
- java - Java servlet doPost 方法不起作用
- python - pandas 数据帧的平等性,除了 dtypes
- r - 检查向量的元素是否在矩阵给定的区间内
- maven - Jfrog Artifactory:如何删除旧的快照工件
- javascript - 如何仅在用户端重置本地存储一次?
- c# - 在属性中定义 LAMBDA 查询,以便可以重复使用
- python - 以编程方式阻止特定文件(.txt 扩展名)的打印请求?
- reactjs - 无法在未安装的组件上调用 setState
- android - 一种包装 LinearLayout 的方法