按列防止重复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。