Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Макрос сбора данных на сводный лист - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сбора данных на сводный лист (Макросы Sub)
Макрос сбора данных на сводный лист
Che79 Дата: Пятница, 16.08.2013, 12:52 | Сообщение № 1
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
Добрый день, уважаемые форумчане!
Помогите, пжл, доработать макрос сбора данных на сводный лист по условиям.
В исходной книге (это выгрузка из базы поставщиков) от 2 до 100 листов формата "Город X-Фирма Y" (на них расчет сметы, по сути Цена-Кол-во-Стоимость) и лист "Common" со сводной таблицей, которую необходимо немного трансформировать.
Из-за того, что на листе "Common" изначально много не нужных данных, то создаю новый лист, на который хочу собрать нужные мне данные.
Подскажите, пжл, как корректно перенести данные по Бюджету, Дисконту и Сумме к оплате НДСных и безНДСных фирм?
Т.е. необходимо на сводный лист корректно добавить значения из ячеек U66, Q67, Q68, Q73, U84. В этих ячейках на листах "Город X-Фирма Y" стоят формулы!
Файлы с примерами "Исходник" и "Что нужно" прилагаю в архиве, т.к. весят каждый более 100 Kb.
В файлах есть скрытые ячейки - они ни на что не влияют, это для сохранения структуры, какие данные в каких ячейках изначально находятся.
Работаю с Excel 2003

Макрос (подробные комментарии сохранены)
[vba]
Код
Sub AAR()
Sheets.Add.Name = "Сводный" ‘добавляем новый лист, на который соберем данные
        With Sheets("Common")
            .Range("A41:F" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy _
                  Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1) ‘копируем с листа Common и вставляем на новый лист массив фирм с НДС
       With Sheets("Common")
           .Range("G42:L" & .Cells(Rows.Count, 7).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1) ‘копируем с листа Common и вставляем на новый лист массив фирм без НДС, после фирм с НДС

     End With
     End With
Columns("A:F").EntireColumn.AutoFit
Range("F:F").Cut Destination:=Range("K:K") ‘переносим столбец сумм, далее будем с ним сравнивать как с себестоимостью проекта
Sheets("Common").Delete ‘удаляем прежний сводный лист
  For i = 2 To ThisWorkbook.Worksheets.Count – 1’задаем цикл по листам
         With Sheets(i)
             .Range("U66" ).Copy _
………………………………………………………………………………………………………………………………….
                     ‘ подскажите, как верно задать цикл по листам и ячейкам, чтобы перенос был корректным, НДСные значения к НДСным фирмам, безНДСные к безНДСным
         End With
     Next i
     End Sub
[/vba]

Заранее благодарен за отклики.
К сообщению приложен файл: Che79.rar (31.4 Kb)


Делай нормально и будет нормально!
 
Ответить
СообщениеДобрый день, уважаемые форумчане!
Помогите, пжл, доработать макрос сбора данных на сводный лист по условиям.
В исходной книге (это выгрузка из базы поставщиков) от 2 до 100 листов формата "Город X-Фирма Y" (на них расчет сметы, по сути Цена-Кол-во-Стоимость) и лист "Common" со сводной таблицей, которую необходимо немного трансформировать.
Из-за того, что на листе "Common" изначально много не нужных данных, то создаю новый лист, на который хочу собрать нужные мне данные.
Подскажите, пжл, как корректно перенести данные по Бюджету, Дисконту и Сумме к оплате НДСных и безНДСных фирм?
Т.е. необходимо на сводный лист корректно добавить значения из ячеек U66, Q67, Q68, Q73, U84. В этих ячейках на листах "Город X-Фирма Y" стоят формулы!
Файлы с примерами "Исходник" и "Что нужно" прилагаю в архиве, т.к. весят каждый более 100 Kb.
В файлах есть скрытые ячейки - они ни на что не влияют, это для сохранения структуры, какие данные в каких ячейках изначально находятся.
Работаю с Excel 2003

Макрос (подробные комментарии сохранены)
[vba]
Код
Sub AAR()
Sheets.Add.Name = "Сводный" ‘добавляем новый лист, на который соберем данные
        With Sheets("Common")
            .Range("A41:F" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy _
                  Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1) ‘копируем с листа Common и вставляем на новый лист массив фирм с НДС
       With Sheets("Common")
           .Range("G42:L" & .Cells(Rows.Count, 7).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1) ‘копируем с листа Common и вставляем на новый лист массив фирм без НДС, после фирм с НДС

     End With
     End With
Columns("A:F").EntireColumn.AutoFit
Range("F:F").Cut Destination:=Range("K:K") ‘переносим столбец сумм, далее будем с ним сравнивать как с себестоимостью проекта
Sheets("Common").Delete ‘удаляем прежний сводный лист
  For i = 2 To ThisWorkbook.Worksheets.Count – 1’задаем цикл по листам
         With Sheets(i)
             .Range("U66" ).Copy _
………………………………………………………………………………………………………………………………….
                     ‘ подскажите, как верно задать цикл по листам и ячейкам, чтобы перенос был корректным, НДСные значения к НДСным фирмам, безНДСные к безНДСным
         End With
     Next i
     End Sub
[/vba]

Заранее благодарен за отклики.

Автор - Che79
Дата добавления - 16.08.2013 в 12:52
KuklP Дата: Пятница, 16.08.2013, 19:10 | Сообщение № 2
Группа: Проверенные
Ранг: Старожил
Сообщений: 2369
Репутация: 486 ±
Замечаний: 0% ±

2003-2010
Che79, можно так:
[vba]
Код
Sub AAR()
     Dim sh As Worksheet, i&
     Application.DisplayAlerts = 0
     Set sh = Sheets.Add
     sh.Name = "Сводный"      ''добавляем новый лист, на который соберем данные
     With Sheets("Common")
         .Range("A41:F" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1)    ''копируем с листа Common и вставляем на новый лист массив фирм с НДС
         .Range("G42:L" & .Cells(Rows.Count, 7).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1)    'копируем с листа Common и вставляем на новый лист массив фирм без НДС, после фирм с НДС
     End With
     Columns("A:F").EntireColumn.AutoFit
     [F:F].Cut [K:K]    'переносим столбец сумм, далее будем с ним сравнивать как с себестоимостью проекта
     Sheets("Common").Delete    'удаляем прежний сводный лист
     For i = 3 To sh.[b65536].End(xlUp).Row    '’задаем цикл по листам
         With Sheets(sh.Cells(i, 2).Value)
             sh.Cells(i, 6).Resize(, 5) = Array(.[U66].Value, .[Q67].Value, .[Q68].Value, .[Q73].Value, .[U84].Value)
         End With
     Next i
     Application.DisplayAlerts = -1
End Sub
[/vba]Заголовки полей проставите сами.
К сообщению приложен файл: Che79__.rar (21.3 Kb)


Ну с НДС и мы чего-то стoим! kuklp60@gmail.com
WM Z206653985942, R334086032478, U238399322728
 
Ответить
СообщениеChe79, можно так:
[vba]
Код
Sub AAR()
     Dim sh As Worksheet, i&
     Application.DisplayAlerts = 0
     Set sh = Sheets.Add
     sh.Name = "Сводный"      ''добавляем новый лист, на который соберем данные
     With Sheets("Common")
         .Range("A41:F" & .Cells(Rows.Count, 1).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1)    ''копируем с листа Common и вставляем на новый лист массив фирм с НДС
         .Range("G42:L" & .Cells(Rows.Count, 7).End(xlUp).Row).Copy _
                 Sheets("Сводный").Cells(Rows.Count, 1).End(xlUp)(2, 1)    'копируем с листа Common и вставляем на новый лист массив фирм без НДС, после фирм с НДС
     End With
     Columns("A:F").EntireColumn.AutoFit
     [F:F].Cut [K:K]    'переносим столбец сумм, далее будем с ним сравнивать как с себестоимостью проекта
     Sheets("Common").Delete    'удаляем прежний сводный лист
     For i = 3 To sh.[b65536].End(xlUp).Row    '’задаем цикл по листам
         With Sheets(sh.Cells(i, 2).Value)
             sh.Cells(i, 6).Resize(, 5) = Array(.[U66].Value, .[Q67].Value, .[Q68].Value, .[Q73].Value, .[U84].Value)
         End With
     Next i
     Application.DisplayAlerts = -1
End Sub
[/vba]Заголовки полей проставите сами.

Автор - KuklP
Дата добавления - 16.08.2013 в 19:10
Che79 Дата: Суббота, 17.08.2013, 21:21 | Сообщение № 3
Группа: Друзья
Ранг: Старожил
Сообщений: 1649
Репутация: 306 ±
Замечаний: 0% ±

2013 Win, 365 Mac
KuklP,
спасибо, всё отлично работает!


Делай нормально и будет нормально!
 
Ответить
СообщениеKuklP,
спасибо, всё отлично работает!

Автор - Che79
Дата добавления - 17.08.2013 в 21:21
Nat Дата: Четверг, 29.08.2013, 14:37 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 50
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Добрый день!

Мне потребовалось написать тривиальный макрос, но с ними я совсем не дружу, поэтому надеюсь на Вашу помощь. Нужно скопировать данные с разных листов на итоговый лист одной и той же книги Excel. Количество столбцов всегда одинаковое, а вот количество строк и листов - разное. При этом желательно, чтобы первую страницу он копировал с заголовком, а остальные - без. Файл прилагаю.

Помогите, пож-та :)

[admin]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/admin]
К сообщению приложен файл: 3838011.xls (62.5 Kb)
 
Ответить
СообщениеДобрый день!

Мне потребовалось написать тривиальный макрос, но с ними я совсем не дружу, поэтому надеюсь на Вашу помощь. Нужно скопировать данные с разных листов на итоговый лист одной и той же книги Excel. Количество столбцов всегда одинаковое, а вот количество строк и листов - разное. При этом желательно, чтобы первую страницу он копировал с заголовком, а остальные - без. Файл прилагаю.

Помогите, пож-та :)

[admin]Тема закрыта. Причина: нарушение п.п. 4, 5q Правил форума[/admin]

Автор - Nat
Дата добавления - 29.08.2013 в 14:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Макрос сбора данных на сводный лист (Макросы Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!