删除excel中前缀相同但后缀不同的条目

问题描述

我的电子表格需要帮助

电子表格看起来像这样:

主机名 一个标题 一个标题
host1-dns 文本 11 文本 12
host1-ftp 文本 11 文本 12
host1-ntp 文本 11 文本 12
host1-vip 文本 11 文本 12
host2-dns 文本 21 文本 22
host2-ftp 文本 21 文本 22
host2-ntp 文本 21 文本 22
host3-dns 文本 31 文本 32
host3-ftp 文本 31 文本 32
host4 文本 41 文本 42
host5-sans 文本 51 文本 52

我需要创建一个表来消除重复的主机。在我的表中:

  • host1-dns、host1-ftp、host1-ntp、host1-vip 只是一台主机,应该算一次
  • 主机名(前缀)没有统一的字符数
  • 后缀也没有统一的字符数
  • 前缀和后缀用连字符分隔

最后,表格应该是这样的:

主机名 一个标题 一个标题
host1 文本 11 文本 12
host2 文本 21 文本 22
host3 文本 31 文本 32
host4 文本 41 文本 42
host5 文本 51 文本 52

我愿意接受任何实现、公式或宏。

提前致谢:-)

解决方法

使用公式添加辅助列:

=LEFT(A2,FIND("-",A2&"-")-1)

然后对最后三列使用 Remove duplicates 对话框:

enter image description here

,

统一表格

  • 在此解决方案中,假设您的表格从单元格 A1 开始,具有标题和三列,并且您希望将其替换为结果。

代码

Option Explicit

Sub uniquifyTable()
    With Range("A1").CurrentRegion
        With .Columns(1).Resize(.Rows.Count - 1).Offset(1)
            Dim Data As Variant: Data = .Value
            Dim i As Long
            For i = 1 To UBound(Data,1)
                Data(i,1) = Left(Data(i,1),_
                    InStr(1,Data(i,1) & "-","-") - 1)
            Next i
            .Value = Data
        End With
        .RemoveDuplicates Columns:=Array(1,2,3),Header:=xlYes
    End With
End Sub