excel去除一行中部分重复的内容

原表:
ID 列1 列2 列3 列N
1 公司1_工位1 公司1_工位2 公司2_工位1 公司3_工位1
2 公司2_工位1 公司2_工位2 公司2_工位1 公司3_工位1
3 公司1_工位1 公司2_工位2 公司2_工位1 公司3_工位1

需要结果:
ID 列1 列2 列3 列N
1 公司1_工位1 公司2_工位1 公司3_工位1
2 公司2_工位1 公司2_工位1 公司3_工位1
3 公司1_工位1 公司2_工位2 公司3_工位1

也就是说,需要去除同一行中公司名相同的格子
有没有什么公式可以办到?

之前看到过一个提问:
示例

a b c d
名称 123 123 231
名称 345 456 467
名称 123 123 123

期望结果是:

a b c d
名称 123 231
名称 345 456 467
名称 123

大致上要求和这个差不多,只是格子里的内容还需要区分一下,这个有没有什么公式之类的可以做到?

你上下两个例子代表着不同的要求,下面例子是将一行内容去重;而上面例子是需要将公司名称相同的去掉,要复杂得多。

且例子中有表述矛盾的地方,详见附图

追问

啊,抱歉,删漏了
上面这个就是我要的东西,肯定比下面那个复杂啦,就是怕随手写的时候出了问题才复制了一个例子过来……大神有办法吗?

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-08-14

可用VBA字典功能做。

例如:

Sub try()
Dim d As Object, rag As Range, j As Integer, k As Integer, arr, brr, a$
Set d = CreateObject("Scripting.Dictionary")
For j = 2 To 4
 d.RemoveAll
 For Each rag In Range("B" & j & ":E" & j)
   a$ = Left(rag.Value, InStr(rag.Value, "_") - 1)
   If Not d.exists(a$) Then
     d(a$) = rag.Value
   End If
 Next
 arr = d.keys
 brr = d.items
 For k = 0 To d.Count - 1
   Cells(j + 5, k + 2) = brr(k)
 Next k
Next j
End Sub


计算结果:


本回答被提问者采纳
相似回答