Excel 2007 - 阻止单元格中的相同数据输入,如上面的行

时间:2017-01-25 09:45:57

标签: excel excel-vba vba

我有一张excel表,允许用户以设定的格式输入,即C列代表产品编号,C列代表故障类别。

我想知道是否有可能阻止用户在C2和H2中输入相同的值,如果它们已经存在于C1和H1中。

请注意,这不可能通过数据验证,因为它会在列中查找唯一值 - 我对两行中的重复值没有任何问题,只要两列中不存在重复项C& H,在下一行。

如果产品存在多个问题,我希望确保用户使用一行,但它们都与相同的故障类别有关。

我对VBA不太满意,所以非常感谢你的帮助。

2 个答案:

答案 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

enter image description here

答案 1 :(得分:0)

如果我正确地阅读了您的请求,可以完成小区验证:

将以下数据验证自定义公式应用于C和H列中的范围:

=COUNTIFS($H1:$H2,H1,$C1:$C2,C1)=1

显然,它在之前版本的Excel中无法使用SUMIFS功能。