我在 excel 列中的值很少,如下所示。
如果两个单元格的值如
CalculateZeroValue
和 CalculateZeroValueBusinessArea
都包含相同的前缀 CalculateZeroValue
,我只想保留一个单元格值。
这是我对上述值的预期输出。
我尝试了
IF
、EXACT
和SEARCH
功能,但无法实现目标。非常感谢任何帮助。
忽略颜色,只是为了表明每个颜色中较长的文本版本需要被删除。所以结果看起来像这样:
Sub test()
Dim rg As Range, cell As Range, c As Range
With ActiveSheet
Set rg = .Range("A2", .Range("A2").End(xlDown))
End With
For Each cell In rg
If cell.Value <> "" Then
Set c = rg.Find(cell.Value, lookat:=xlPart)
If Not c Is Nothing Then
If Len(c) > Len(cell) Then
c.ClearContents
Else
Set c = rg.FindNext(c)
If Len(c) > Len(cell) Then c.ClearContents
End If
End If
End If
Next
rg.SpecialCells(xlBlanks).EntireRow.Delete
End Sub
rg变量是A列数据的范围,中间不能有空行
然后它循环到 rg 中的每个单元格,使用循环单元格值在 rg 中搜索作为 c 变量。如果 c 不是什么,它检查找到的单元格值(c 变量)的字符长度是否大于循环单元格值的字符长度,然后它清除找到的单元格(c 变量)的内容。
否则,它会使用 find-next 方法进行第二次检查。它再次检查第二个找到的单元格值(c 变量)的字符长度是否大于循环单元格值的字符长度,然后清除找到的单元格(c 变量)的内容。
最后它删除了 rg. 中空白单元格的整行