Добрый день уважаемые знатоки excel. Хочу попросить у вас помощи в решении такого вопроса: есть лист1 с данными в 1-ом столбце и есть лист2 с данными в 1-ом столбце + описания во 2-ом столбце. Необходимо сравнить 1-ые столбцы и те ячейки которые остутствуют в 1-ом листе, вывести всю строку (из лист2) на 3 листе. прикреплю пример для наглядности: P.S. данные в листе 1 и листе 2 будут корректироваться.
Добрый день уважаемые знатоки excel. Хочу попросить у вас помощи в решении такого вопроса: есть лист1 с данными в 1-ом столбце и есть лист2 с данными в 1-ом столбце + описания во 2-ом столбце. Необходимо сравнить 1-ые столбцы и те ячейки которые остутствуют в 1-ом листе, вывести всю строку (из лист2) на 3 листе. прикреплю пример для наглядности: P.S. данные в листе 1 и листе 2 будут корректироваться.2good
Public Sub RefreshData() 'Created using add-in ActiveTables Dim strConnection As String Dim strSQL As String strConnection = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=3';", "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=NO;IMEX=3';") strSQL = "SELECT f1, F2 FROM [Лист2$] where not f1 in (select distinct f1 from [Лист1$])" With ThisWorkbook.Sheets(3) .UsedRange.Clear With .QueryTables.Add(strConnection, .Range("A1"), strSQL) .FieldNames = False .Refresh False .Delete End With End With End Sub
[/vba]
[vba]
Код
Public Sub RefreshData() 'Created using add-in ActiveTables Dim strConnection As String Dim strSQL As String strConnection = IIf(Val(Application.Version) < 12, "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 8.0;HDR=NO;IMEX=3';", "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties='Excel 12.0;HDR=NO;IMEX=3';") strSQL = "SELECT f1, F2 FROM [Лист2$] where not f1 in (select distinct f1 from [Лист1$])" With ThisWorkbook.Sheets(3) .UsedRange.Clear With .QueryTables.Add(strConnection, .Range("A1"), strSQL) .FieldNames = False .Refresh False .Delete End With End With End Sub
Без доп. столбца. Данные можно добавлять на всех листах. На листе 1 добавил Вам раскрывающийся список. На листе 2 делал автораскраску тех, кого нет в листе 1 (см. условное форматирование). Имена можно посмотреть, нажав Контрл+F3.
Без доп. столбца. Данные можно добавлять на всех листах. На листе 1 добавил Вам раскрывающийся список. На листе 2 делал автораскраску тех, кого нет в листе 1 (см. условное форматирование). Имена можно посмотреть, нажав Контрл+F3._Boroda_
Без доп. столбца. Данные можно добавлять на всех листах. На листе 1 добавил Вам раскрывающийся список. На листе 2 делал автораскраску тех, кого нет в листе 1 (см. условное форматирование). Имена можно посмотреть, нажав Контрл+F3. К сообщению приложен файл: bb_1.xlsx(14Kb)
Спасибо большое! Выбрал Ваш вариант. Но не совсем смог разобраться с добавлением новых листов. Получается сейчас: лист1- массив (постоянное меняю/добавляю), лист2-список (редко вношу изменения) лист3 - результат. А можно ли получить следующую картину: добавим схожих по типу лист2: лист2_а, лист2_б, а в лист3: результат сравнения массива с лист2 1-2 колонке (как сейчас), 3-4 колонка с листа2_а, 5-6 колонка с листа2_б. и .т.д?
Без доп. столбца. Данные можно добавлять на всех листах. На листе 1 добавил Вам раскрывающийся список. На листе 2 делал автораскраску тех, кого нет в листе 1 (см. условное форматирование). Имена можно посмотреть, нажав Контрл+F3. К сообщению приложен файл: bb_1.xlsx(14Kb)
Спасибо большое! Выбрал Ваш вариант. Но не совсем смог разобраться с добавлением новых листов. Получается сейчас: лист1- массив (постоянное меняю/добавляю), лист2-список (редко вношу изменения) лист3 - результат. А можно ли получить следующую картину: добавим схожих по типу лист2: лист2_а, лист2_б, а в лист3: результат сравнения массива с лист2 1-2 колонке (как сейчас), 3-4 колонка с листа2_а, 5-6 колонка с листа2_б. и .т.д?2good