答案 0 :(得分:-1)
这里有一些代码可能能够做你想要的。请注意代码是区分大小写的。希望有所帮助:)
Sub testDuplicate()
lastrow = WorksheetFunction.CountA(Range("A:A"))
For j = 1 To lastrow
For i = 1 To lastrow
If j = i Then
'Do nothing
ElseIf Cells(i, 1) = Cells(j, 1) Then
Cells(j, 2).Value = "Duplicate"
Exit For
Else
Cells(j, 2) = "Unique"
End If
Next i
Next j
End Sub
答案 1 :(得分:-1)
您将首先想要清理数据。例如,加拿大专业委员会有两种拼写方式。您可能希望尝试创建一个新列,该列是帐户名的前2个或3个字,并使用upcase
或lowcase
函数使其不区分大小写。然后,您可以轻松地从新列中找到重复项。
自从您标记SAS以来,这里有一个可能的基于SAS的解决方案:
第1步:为每个帐户名称获取前2个字,并使其不区分大小写
data have2;
length Account_Name2 $20.;
set have;
word_length = countw(Account_Name);
if(word_length > 2) then Account_Name2 = upcase(catx(' ', scan(Account_Name, 1), scan(Account_Name, 2) ) );
else Account_Name2 = upcase(Account_Name);
drop word_length;
run;
第2步:按account_name2
对数据进行排序,并将重复项保存到新数据集
proc sort data=have2
out=_TMP_
nodupkey
dupout=dupes;
by account_name2;
run;
请注意,_TMP_
数据集只是为了防止覆盖have2
表。
步骤3:dupout
将have2
合并到已清理的表account_name2
中,然后标记重复项
proc sort data=have2;
by account_name2;
run;
data want;
merge have2
dupes(in=duprecs keep=account_name2);
by account_name2;
Dupe_Flag = (duprecs);
drop account_name2;
run;
我希望这有帮助!