Есть списки ID на 2 листах. Один лист постоянно обновляется, и сверяется со вторым. Как сделать проверку, на наличии всех ID на втором листе. если какого то ID не хватает на втором листе, что бы он выводил список, каких не достаёт.
Заранее спасибо
=ЕСЛИ(ЕОШИБКА(ВПР(G:G;masterfile!A:A;1;0));G2;0)
Такая формула, помогает мне найти все ID которые, не найдены на листе masterFile. Но мне не целый столбец нужен, а просто не большой список недостающих ID, без задвоенностей
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
делаю через встроенную функцию, на выборку уникальных имен, в сложном автофильтре, но у меня таких 3 листа. для этой проверки. А встроенная функция не позволяет сохранять эти выборки на других листах
Проверка на уникальные имена
Модератор: Naeel Maqsudov
К сожалению, Вы не указали куда девать найденные значения.
Пусть в столбце "A" на листе 1 находятся обновляемые данные. И пусть в столбце "A" на листе 2 находятся имеющиеся данные. Следующий макрос выведет в столбец "B" листа 2, начиная с 1-й строки, те уникальные значения, которые есть в столбце "A" на листе 1, но нет в столбце "A" на листе 2.
Пусть в столбце "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
-
- Сообщения: 163
- Зарегистрирован: 05 мар 2009, 11:27
Код: Выделить всё
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
как выводить на ту форму этот столбец, количество заполненных ячеек на листе проверка может быть сколько угодно.
заранее спасибо
- Aent
- Сообщения: 1129
- Зарегистрирован: 01 окт 2006, 14:52
- Откуда: Saratov,Russia
- Контактная информация:
Смотрим Help по ListBox - видим:есть лист proverka, в столбце А:A находиться столбец данных, мне нужно этот столбец записнуть в лист бокс, на отдельной форме Userform2.textbox1
как выводить на ту форму этот столбец, количество заполненных ячеек на листе проверка может быть сколько угодно.
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.
Андрей Энтелис,
aentelis.livejournal.com
aentelis.livejournal.com