假设我有一个表格如下:
**A** **B**
2018-01-25 Red
2018-01-25 Black
2018-01-25 Black
2018-01-24 Blue
2018-01-24 Blue
2018-01-24 Red
现在我想根据A的唯一值显示B的唯一值。 我希望C和D列像:
**C D**
2018-01-25 Red
2018-01-25 Black
2018-01-24 Blue
2018-01-24 Red
请帮我在Excel宏中编写VBA脚本来解决这种情况。我使用了公式:"=IF(SUMPRODUCT(($A$2:A2=A2)*($B$2:B2=B2))>1,0,1)"
但计算50k记录需要大约15-20分钟。
我想特别使用xls格式,不能使用xlsm或xlsx,它们在数据透视表中提供了不同的计数。
答案 0 :(得分:1)
您可以使用Excel的删除重复项功能
Option Explicit
Public Sub CopyAndRemoveDuplicates()
Dim ws As Worksheet
Set ws = ThisWorkbook.Worksheets("Sheet1") 'specify your sheet name
ws.Range("A:B").Copy ws.Range("C:D") 'copy colums A:B to C:D
ws.Range("C:D").RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo
'remove duplicates from C:D
End Sub
如果第一行中有标题,请不要忘记将Header:=xlNo
更改为Header:=xlYes
。
答案 1 :(得分:0)
正是@Peh所说的 - 这将是你的代码:
Columns("A:B").Copy
Columns("C:C").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveSheet.Range("$C$1:$D$" & ActiveSheet.Range("D" & ActiveSheet.Rows.Count).End(xlUp).Row).RemoveDuplicates Columns:=Array(1, 2), Header:=xlNo