按列防止重复input

在Excel中,有没有一种方法(非VBA)有一个特定的列不接受条目,如果他们在该特定列中的其他地方重复(不是所有列,只是列B例如)

在下面的数据中,EMP_ID 324的第二项不被允许

Region EMP_ID Salary Yrs_Experience Chicago 324 $165,140 10 Chicago 234 $162,692 12 NY 56 $122,451 10 NY 567 $98,567 7 SF 344 $116,735 8 SF 324 

可以通过数据validation来实现。 假设Region为A1,selectColumnB,DATA> Data Tools> Data Validation – Data Validation …,Allow:Custom,Formula:

  =COUNTIF(B:B,B1)=1 

好。

使用Worksheet_Change事件macros来pipe理input。 如果find重复,则反转该操作并将用户发送回违规单元以获得更正的值。

 Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Columns(2)) Is Nothing Then '<~~something happened in column B On Error GoTo bm_Safe_Exit Application.EnableEvents = False Dim dupe As Range For Each dupe In Intersect(Target, Columns(2).SpecialCells(xlCellTypeConstants)) If Application.CountIf(Columns(2), dupe.Value2) > 1 Then Application.Undo dupe.Activate Exit For End If Next dupe End If bm_Safe_Exit: Application.EnableEvents = True End Sub 

这应该处理复制并粘贴到列B,只要粘贴的值不会创build重复。 我已经将被检查的单元格缩小到(也称为xlCellTypeConstants )中键入的值,但也可以抛出更宽的networking。