我有一张excel表,允许用户以设定的格式输入,即C列代表产品编号,C列代表故障类别。
我想知道是否有可能阻止用户在C2和H2中输入相同的值,如果它们已经存在于C1和H1中。
请注意,这不可能通过数据验证,因为它会在列中查找唯一值 - 我对两行中的重复值没有任何问题,只要两列中不存在重复项C& H,在下一行。
如果产品存在多个问题,我希望确保用户使用一行,但它们都与相同的故障类别有关。
我对VBA不太满意,所以非常感谢你的帮助。
答案 0 :(得分:1)
如果将此VB添加到工作表模块,它应该可以工作......
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 1 And Target.Column = 8 And Target.Rows.Count = 1 And Target.Columns.Count = 1 Then
'Search Down
If Target.Offset(1, -5).Value <> "" Then
r = Target.Offset(0, -5).End(xlDown).Row
Do
If Cells(r, 3).Value & Cells(r, 8).Value = Target.Offset(0, -5).Value & Target.Value Then
MsgBox ("Duplicate Data detected below")
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
Exit Do
End If
r = r - 1
Loop Until Target.Row = r
End If
'Search Up
r = 1
Do
If Target.Offset(-r, -5).Value & Target.Offset(-r, 0).Value = Target.Offset(0, -5).Value & Target.Value Then
MsgBox ("Duplicate Data detected above")
Application.EnableEvents = False
Target.Value = ""
Application.EnableEvents = True
Exit Do
End If
r = r + 1
Loop Until Target.Row = r
End If
End Sub
答案 1 :(得分:0)
如果我正确地阅读了您的请求,可以完成小区验证:
将以下数据验证自定义公式应用于C和H列中的范围:
=COUNTIFS($H1:$H2,H1,$C1:$C2,C1)=1
显然,它在之前版本的Excel中无法使用SUMIFS
功能。