输入重复值时提示

重复提示
平时在输入大量数据时,在同一列中自上往下输入,一不注意可能会输入重复项。
有没方案能提示输入重复呢?
有2种方案:一个是函数countif在数据有效性中定义,另一个是VBA代码。
先来写写函数方法:
比如我们是在B列中输入数据的那范围就是B1~B65536,在数据有效性中使用自定义,在公式中输入:=COUNTIF($B$1:$B$65536,B1)=1,随之向下填充,当输入重复值会提示,并清空当前输入值。
VBA代码:
 
  1. Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)   
  2.   Dim msg As VbMsgBoxResult   
  3.   On Error GoTo err  ‘当有错误时结束程序   
  4.   If Target(1).Column = 2 Then ‘如果是第二列   
  5.       If WorksheetFunction.CountIf(Intersect(ActiveSheet.UsedRange, Target(1).EntireColumn), Target(1).Value) > 1 Then   
  6.         ‘询问用户是否保留重复值   
  7.       msg = MsgBox("出现重复数据:  " & Target(1).Value & vbCrLf & vbCrLf & "本列与此数据重复次数: " & WorksheetFunction.CountIf(Intersect(ActiveSheet.UsedRange, Target(1).EntireColumn), Target(1).Value) – 1 & vbCrLf & "想保留请选“是(Y)”,否则选“否(N)”。", vbYesNo + vbOKOnly, "提示")   
  8.       If msg = vbNo Then  ‘如果不保留   
  9.         Application.EnableEvents = False    
  10.         Target.Value = ""  ‘清空数据   
  11.         Application.EnableEvents = True  ‘恢复   
  12.       Else: If msg = vbYes Then Exit Sub  ‘如果选择保留则直接退出程序   
  13.       End If   
  14.     End If   
  15.   End If   
  16. err:   
  17. End Sub  
从这两种方法来看,第一种适合大众化,第二种适合有特殊需求的,如可以询问保留重复数据。
大家有需要选使用吧!
分享到: