原表:
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
大致上要求和这个差不多,只是格子里的内容还需要区分一下,这个有没有什么公式之类的可以做到?
你上下两个例子代表着不同的要求,下面例子是将一行内容去重;而上面例子是需要将公司名称相同的去掉,要复杂得多。
且例子中有表述矛盾的地方,详见附图
追问啊,抱歉,删漏了
上面这个就是我要的东西,肯定比下面那个复杂啦,就是怕随手写的时候出了问题才复制了一个例子过来……大神有办法吗?
可用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
计算结果: