Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.02.2012, 23:47   #1
Poltavtcev
 
Регистрация: 05.02.2011
Сообщений: 6
По умолчанию Выборка строк по данным и перенос на новый лист

Скорее всего ситуация проще пареной репы. Но в екселе второй день. Поэтому, если кто знает решение - подскажите.

Есть два листа.
На первом - прайс-лист с различными данными по столбикам: код, наименование, описание и т.д.
На втором - только коды.

Задача: с первого листа найти все строки в которых встречаются коды со второго листа и переместить их на третий лист.

Вот пример файла: Плюм


Заранее благодарен.
Poltavtcev вне форума Ответить с цитированием
Старый 28.02.2012, 00:12   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Элементарно - тянете ВПРом в большую таблицу коды из списка кодов - сортируете результат, копируете в новую книгу.
Если нужно делать макросом - можно банально перебирать цикл в цикле ячейки и копировать совпавшие строки в новую книгу, или словарь и 3 массива - технично и быстро.
Но если второй день - то технично рановато...
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2012, 00:15   #3
Poltavtcev
 
Регистрация: 05.02.2011
Сообщений: 6
По умолчанию

Первый вариант подходит.
А можно готовый вариант кода? Или Хотя-бы ткнуть где есть похожее решение
Так как мне не для того чтобы умнее в екселе стать - мне по работе нужно срочно ))
Poltavtcev вне форума Ответить с цитированием
Старый 28.02.2012, 00:32   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Ну вот менее техничный вариант - цикл в цикле перебор ячеек:

Код:
Sub tt()
    Dim sh, cc As Range, ccc As Range, i As Long
    Application.ScreenUpdating = False
    Set sh = Worksheets.Add(after:=Sheets(Sheets.Count))
    sh.Name = "Результат" & Sheets.Count - 2
    For Each cc In Sheets("Прайс").UsedRange.Columns(1).Cells
        For Each ccc In Sheets("Коды").[a1].CurrentRegion.Cells
            If cc.Value = ccc.Value Then
                i = i + 1
                cc.EntireRow.Copy sh.Cells(i, 1)
                Exit For
            End If
        Next ccc, cc
    Application.ScreenUpdating = True
End Sub
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 28.02.2012 в 00:42. Причина: sh.Name = "Результат" & Sheets.Count - 2 - так можно тестить до упаду :)
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2012, 01:49   #5
Poltavtcev
 
Регистрация: 05.02.2011
Сообщений: 6
По умолчанию

Большое спасибо!
Все работает как нужно.
Только можно без создания нового листа? А переносить на уже существующий.
Никак не могу понять что там подправить нужно.

Последний раз редактировалось Poltavtcev; 28.02.2012 в 01:52.
Poltavtcev вне форума Ответить с цитированием
Старый 28.02.2012, 01:59   #6
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код:
Sub tt()
    Dim cc As Range, ccc As Range, i As Long
    Application.ScreenUpdating = False
    For Each cc In Sheets("Прайс").UsedRange.Columns(1).Cells
        For Each ccc In Sheets("Коды").[a1].CurrentRegion.Cells
            If cc.Value = ccc.Value Then
                i = i + 1
                cc.EntireRow.Copy Sheets("Результат").Cells(i, 1)
                Exit For
            End If
        Next ccc, cc
    Application.ScreenUpdating = True
End Sub
Но предполагаем, что лист Результат пустой.
Или нужно добавить его очистку в начале кода - можете записать этот процесс рекордером и добавить в код.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 28.02.2012, 02:05   #7
Poltavtcev
 
Регистрация: 05.02.2011
Сообщений: 6
По умолчанию

Да - вот то что именно нужно.
Премного благодарен.
Poltavtcev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных, перенос строки на другой лист) Viten2 Microsoft Office Excel 1 03.05.2011 16:14
Выборка строк с определенной меткой из одной таблицы и автоматический перенос в новую таблицу. dk01 Microsoft Office Excel 28 30.01.2011 18:16
Автоматический перенос строк из одного листа в другой лист Результат maksvas Microsoft Office Excel 4 22.10.2010 14:03
Поиск по выделенным красным цветом строк и копирование их на новый лист. PetroD Microsoft Office Excel 11 10.08.2010 15:01
Перенос данных на новый лист в определенном формате akd2009 Microsoft Office Excel 6 18.01.2010 12:40