Страница 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
тема закрыта