
У меня есть таблица 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
Если у вас возникли какие-либо сомнения, попробуйте сначала на пробном листе.
Если вы сохраните книгу, макрос будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как.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
Для работы этого метода должны быть включены макросы!