![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу. Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста". Название темы слишком короткое или не отражает сути вашего вопроса. Тема исчерпала себя, помните, один вопрос - одна тема Прочитайте правила и заново правильно создайте тему. |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 09.09.2008
Сообщений: 43
|
![]()
Друзья, подскажите, в листе to Stores существует некая база данных с номерами магазинов с 8010 по 8023. В книге также созданы одноименные листы с номерами магазинов. Нужен макрос, который бы из листа to Stores копировал информацию со столбца A по столбец K по каждому магазину в лист, относящийся к этому магазину. Выборку можно делать по столбцу B книги to Stores, т.е. именно этот столбец содержит информацию о магазине в формате: Store 8010, Store 8011 ... Store 8023
|
![]() |
![]() |
#2 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Посмотрите вложение. Запустите макрос "Distribute".
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 30.07.2008
Сообщений: 125
|
![]()
Хороший код.
А не напишеть коментарии к коду Хотелось бы понять принцип работы макроса. А то я делаю чтото вроде того но у меня на это уходит много времени и код получается в 4 раза длинней а это хороший пример для меня чтобы в будующем писать компактнее. |
![]() |
![]() |
#4 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
надеюсь SAS888 не обидится. комментарии будут за строкой кода
Sub Distribution() Application.ScreenUpdating = False не обновлять экран Dim i As Long, j As Long, a As Long, b As Long, ws As Worksheet Sheets("to stores").Select 'Макрос может запускаться при любом активном листе выбран лист "to stores" (стал активным) For i = 9 To Cells(Rows.Count, "B").End(xlUp).Row цикл начиная с 9-го ряда до конца списка On Error GoTo Metka 'Если такой лист не существует Set ws = Sheets(Right(Cells(i, "B"), 4)) забираем 4 правых символа из ячейки В. на этот лист необходимо будет копировать очередной (i-й) ряд данных с листа-источника a = ws.Cells(Rows.Count, "A").End(xlUp).Row определяем последний ряд по колонке А на листе-приемнике b = ws.Cells(Rows.Count, "B").End(xlUp).Row определяем последний ряд по колонке В (на всякий случай) j = IIf(a > b, a + 1, b + 1) опредеем ряд куда копировать данные по большему из А или В, + 1 Rows(i).Copy ws.Rows(j) копируем ряд Metka: Next End Sub Код действительно очень компактный. На мой взгляд, сомнительна необходимость строки с запретом обновления экрана. Потому как открыт у нас постоянно лист "to stores", а данные заносятся на закрытые листы, могу предположить, что эксель ничего не обновляет в данной ситуации (это предположение). Ну, и после Next, видимо, необходимо было снова включить обновление экрана.
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
#5 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Спасибо IgorGO. Комментарии подробнейшие.
По поводу Application.ScreenUpdating: 1. Согласен, в данном случае это излишне (вставил на автомате). 2. По завершении работы макроса Application.ScreenUpdating возвращается в состояние True автоматически.
Чем шире угол зрения, тем он тупее.
|
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Нужно написать макрос для Word. | Hoomer | Фриланс | 2 | 24.09.2008 12:19 |
Помогите написать макрос выбора по дате/времени и сортировке по нужным параметрам | rf_dru | Microsoft Office Excel | 39 | 04.07.2008 12:36 |
задача под windows,помогите написать.Надо написать на Borland C++Builder 6. | eddddii | Помощь студентам | 9 | 23.05.2008 17:04 |
Помогите написать прогу!Среди заданных целых чисел k, l, m найти пары кратных.Написать по проще чемЭесть | vdv08 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 04.04.2008 16:56 |
помогите, пожалуйсто, написать макрос для excel | bacalavr | Microsoft Office Excel | 2 | 04.04.2008 11:39 |