我有一列,其行如下:
Facebook、Skype
Facebook、Skype
Facebook、Twitter、Skype
Facebook、Twitter
Facebook、Skype
Facebook、Skype
Facebook、Twitter、Skype
Facebook、Skype、Instagram、Viber
我怎样才能从这个数据范围中挑选出唯一的值以便结果如下:
Facebook、Skype、Twitter、Instagram、Viber
答案1
假设我们在列中有这样的数据A:
运行此 VBA 宏:
Sub GatherUniques()
Dim N As Long, cl As Collection
Dim i As Long
Set cl = New Collection
N = Cells(Rows.Count, "A").End(xlUp).Row
On Error Resume Next
For i = 1 To N
st = Replace(Cells(i, 1).Text, " ", "")
ary = Split(st, ",")
For Each a In ary
cl.Add a, CStr(a)
Next a
Next i
On Error GoTo 0
st = cl.Item(1)
For i = 2 To cl.Count
st = st & "," & cl.Item(i)
Next i
Range("B1").Value = st
End Sub
会产生:
宏的安装和使用非常容易:
- ALT-F11 打开 VBE 窗口
- ALT-I ALT-M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,宏将随之保存。如果您使用的是 2003 以后的 Excel 版本,则必须将文件保存为 .xlsm 而不是 .xlsx
要删除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
要使用 Excel 中的宏:
- ALT-F8
- 选择宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其工作!
答案2
我会使用 notepad++ 或 ms word。将列复制/粘贴到其中。通过制表符查找/替换“,” 。复制/粘贴回 excel。或者,如果这是工作表中唯一的数据,您可以尝试将其保存为 csv 文件,然后在 excel 中重新打开。
答案3
在“数据”下使用“文本到列”按钮,并在向导中选择“分隔”和“逗号”。这会将数据拆分为单独的位,以便下一步获取唯一值。
然后在数据下对每一列使用“高级过滤器”并选择“复制到另一个位置”,对于“列表范围”,从新扩展的数据范围中选择一列,然后选中“仅唯一记录”并选择“复制到”位置。
或者,您可以将拆分列复制在一起并执行一次高级过滤。
可以通过多种方式将其整理回用逗号分隔的单个单元格。