驗證 Excel 中一行中的儲存格組合是否唯一

驗證 Excel 中一行中的儲存格組合是否唯一

我有一個 Excel 工作表,其中 3 列(A、B 和 C)形成每行的唯一標識符,但列中的值不是唯一的。例如:

   ABC    REF   001
   ABC    REF   002
   ABC    REF   003
   ABC    DOC   001
   ABC    DOC   002
   ABC    DOC   003

上面的行是有效的,因為沒有行具有相同的值組合(例如,沒有兩行具有“ABC REF002”,即使 B 列和 C 列有重複)

如何新增 Excel 驗證,以便如果使用者在 A、B 和 C 列中輸入與另一行的組合相符的值組合,則會發生驗證錯誤?

答案1

在工作表程式碼區域中輸入以下事件巨集:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim I As Long, st As String, J As Long, k As Long
    Dim CH As String

    If Intersect(Range("A:C"), Target) Is Nothing Then Exit Sub
    CH = Chr(1)
    I = Target.Row
    J = Cells(Rows.Count, 1).End(xlUp).Row
    st = Cells(I, 1).Text & CH & Cells(I, 2).Text & CH & Cells(I, 3).Text

    For k = 1 To J
        If k <> I Then
            stk = Cells(k, 1).Text & CH & Cells(k, 2).Text & CH & Cells(k, 3).Text
            If st = stk Then
                MsgBox "Combination already in use:" & vbCrLf & stk
                Exit Sub
            End If
        End If
    Next k

End Sub

因為它是工作表程式碼,所以非常容易安裝並自動使用:

  1. 右鍵單擊 Excel 視窗底部附近的選項卡名稱
  2. 選擇查看代碼 - 這將打開一個 VBE 窗口
  3. 將內容貼進去並關閉 VBE 窗口

如果您有任何疑慮,請先在試用工作表上嘗試。

如果儲存工作簿,巨集將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案儲存為.xlsm而不是.xlsx

若要刪除巨集:

  1. 如上所示調出 VBE 窗口
  2. 清除程式碼
  3. 關閉VBE視窗

要了解有關巨集的更多信息,請參閱:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

要了解有關事件巨集(工作表程式碼)的更多信息,請參閱:

http://www.mvps.org/dmcritchie/excel/event.htm

必須啟用巨集才能使其工作!

相關內容