
我有一個 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
因為它是工作表程式碼,所以非常容易安裝並自動使用:
- 右鍵單擊 Excel 視窗底部附近的選項卡名稱
- 選擇查看代碼 - 這將打開一個 VBE 窗口
- 將內容貼進去並關閉 VBE 窗口
如果您有任何疑慮,請先在試用工作表上嘗試。
如果儲存工作簿,巨集將隨之儲存。如果您使用的是 2003 年以後的 Excel 版本,則必須將檔案儲存為.xlsm而不是.xlsx
若要刪除巨集:
- 如上所示調出 VBE 窗口
- 清除程式碼
- 關閉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
必須啟用巨集才能使其工作!