Страница 1 из 1
Проверка на уникальные имена
Добавлено: 03 июл 2009, 09:44
kuznetsovSergey
Есть списки ID на 2 листах. Один лист постоянно обновляется, и сверяется со вторым. Как сделать проверку, на наличии всех ID на втором листе. если какого то ID не хватает на втором листе, что бы он выводил список, каких не достаёт.
Заранее спасибо
=ЕСЛИ(ЕОШИБКА(ВПР(G:G;masterfile!A:A;1;0));G2;0)
Такая формула, помогает мне найти все ID которые, не найдены на листе masterFile. Но мне не целый столбец нужен, а просто не большой список недостающих ID, без задвоенностей
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
делаю через встроенную функцию, на выборку уникальных имен, в сложном автофильтре, но у меня таких 3 листа. для этой проверки. А встроенная функция не позволяет сохранять эти выборки на других листах
Re: Проверка на уникальные имена
Добавлено: 03 июл 2009, 11:55
SAS888
К сожалению, Вы не указали куда девать найденные значения.
Пусть в столбце "A" на листе 1 находятся обновляемые данные. И пусть в столбце "A" на листе 2 находятся имеющиеся данные. Следующий макрос выведет в столбец "B" листа 2, начиная с 1-й строки, те уникальные значения, которые есть в столбце "A" на листе 1, но нет в столбце "A" на листе 2.
Код: Выделить всё
Sub Main()
Dim i As Long, j As Long, x As New Collection, a(), b(), c()
Application.ScreenUpdating = False: Sheets(2).Activate
With Sheets(1)
a = Range([A1], Cells(Rows.Count, 1).End(xlUp)).Value
b = .Range(.[A1], .Cells(Rows.Count, 1).End(xlUp)).Value
End With
ReDim c(1 To UBound(a, 1), 1 To 1): On Error Resume Next
For i = 1 To UBound(a, 1): x.Add a(i, 1), CStr(a(i, 1)): Next
On Error GoTo 0: j = 0
For i = 1 To UBound(b, 1)
On Error Resume Next
x.Add b(i, 1), CStr(b(i, 1))
If Err = 0 Then
j = j + 1: c(j, 1) = b(i, 1)
Else: On Error GoTo 0
End If
Next
Range([B1], Cells(UBound(c, 1), 2)).Value = c
End Sub
Re: Проверка на уникальные имена
Добавлено: 03 июл 2009, 14:16
kuznetsovSergey
Код: Выделить всё
Sheets("Proverka").Select
Columns("A:A").Select
Columns("A:A").AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Selection.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Вот так вот я сделал, и всё отлично и быстро работает
смотрите, вопрос теперь такой, есть лист proverka, в столбце А:A находиться столбец данных, мне нужно этот столбец записнуть в лист бокс, на отдельной форме Userform2.textbox1
как выводить на ту форму этот столбец, количество заполненных ячеек на листе проверка может быть сколько угодно.
заранее спасибо
Re: Проверка на уникальные имена
Добавлено: 03 июл 2009, 15:14
Aent
есть лист proverka, в столбце А:A находиться столбец данных, мне нужно этот столбец записнуть в лист бокс, на отдельной форме Userform2.textbox1
как выводить на ту форму этот столбец, количество заполненных ячеек на листе проверка может быть сколько угодно.
Смотрим Help по ListBox - видим:
RowSource Property
Specifies the source providing a list for a ComboBox or ListBox.
Syntax
object.RowSource [= String]
The RowSource property syntax has these parts:
Part Description object Required. A valid object. String Optional. The source of the list for the ComboBox or ListBox.
Remarks
The RowSource property accepts worksheet ranges from Microsoft Excel.
Re: Проверка на уникальные имена
Добавлено: 03 июл 2009, 16:21
kuznetsovSergey
тема закрыта