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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение динамических таблиц на разных листах в третем - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
Страница 1 из 11
Модератор форума: _Boroda_, Pelena, Manyasha, SLAVICK 
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение динамических таблиц на разных листах в третем (Макросы/Sub)
Объединение динамических таблиц на разных листах в третем
alex808 Дата: Среда, 31.08.2016, 15:36 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Добрый день, уважаемые специалисты..У меня наверное глупый вопрос, но ответа на него в форуме не нашел.Есть две одинаковые таблицы (по столбцам), находятся на разных листах. Все их отличие в том,что на первой находятся исходящие данные, а на втором входящие. Задача собрать их в одну на третьем листе, дабы потом по аргументам вычислить изменения ..Как сделать это на одном листе при помощи форума и форумчан я понял. В приложенном файле это сделано на листе1, но как только встал вопрос такого же действия с разных листов (2) и (4) на лист "сумма" я впал в ступор. Помогите пожалуйста с кодом. ...Таблицы будут постоянно увеличиваться.Кроме этого в таблицах есть и другие данные, которые в общей таблице не нужны. Спасибо
К сообщению приложен файл: 1745632.xlsm(35Kb)
 
Ответить
СообщениеДобрый день, уважаемые специалисты..У меня наверное глупый вопрос, но ответа на него в форуме не нашел.Есть две одинаковые таблицы (по столбцам), находятся на разных листах. Все их отличие в том,что на первой находятся исходящие данные, а на втором входящие. Задача собрать их в одну на третьем листе, дабы потом по аргументам вычислить изменения ..Как сделать это на одном листе при помощи форума и форумчан я понял. В приложенном файле это сделано на листе1, но как только встал вопрос такого же действия с разных листов (2) и (4) на лист "сумма" я впал в ступор. Помогите пожалуйста с кодом. ...Таблицы будут постоянно увеличиваться.Кроме этого в таблицах есть и другие данные, которые в общей таблице не нужны. Спасибо

Автор - alex808
Дата добавления - 31.08.2016 в 15:36
devilkurs Дата: Среда, 31.08.2016, 16:42 | Сообщение № 2
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 141
Репутация: 38 ±
Замечаний: 0% ±

Excel 2007, 2010
Мой вариант
К сообщению приложен файл: devilkurs.xlsm(39Kb)


 
Ответить
СообщениеМой вариант

Автор - devilkurs
Дата добавления - 31.08.2016 в 16:42
alex808 Дата: Среда, 31.08.2016, 16:57 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Мой вариант

Спасибо, но нужен вариант как в первом листе, без выбора
 
Ответить
Сообщение
Мой вариант

Спасибо, но нужен вариант как в первом листе, без выбора

Автор - alex808
Дата добавления - 31.08.2016 в 16:57
Manyasha Дата: Среда, 31.08.2016, 17:11 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 1589
Репутация: 669 ±
Замечаний: 0% ±

Excel 2007, 2010
alex808, просто уберите из макроса вызов формы, и я бы добавила очищение листа "сумма" в начало.
Внесла правки в макрос от devilkurs
[vba]
Код
Sub Макрос3()
'
' Макрос3 Макрос
'
' Сочетание клавиш: Ctrl+й
'
'    NameList = "": bStop = False
    ThisWorkbook.Worksheets("сумма").[a1].CurrentRegion.Offset(1).Clear'Очищаем лист
    For Each Sh In Array(Sheets("Лист2"), Sheets("Лист4"))
'        ВыборЛиста.Show (vbModal)
'        If bStop Then GoTo сюда:
        With Sh
            lLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            .Range("A2:D" & lLastRow).Copy Sheets("сумма").Range("A" & Sheets("сумма").Cells(Sheets("сумма").Rows.Count, 1).End(xlUp).Row + 1)
        End With
        Application.CutCopyMode = False
    Next
сюда:
    With Application.ThisWorkbook.Worksheets("сумма")
        .AutoFilter.Sort.SortFields.Clear
        .AutoFilter.Sort.SortFields.Add _
            Key:=.Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    
        .Range("E2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IFERROR(-LOOKUP(2,1/(R1C2:R[-1]C[-3]=RC[-3]),R1C4:R[-1]C[-1])+RC[-1],0)"
    End With
End Sub
[/vba]


marinamorozova_box@mail.ru
ЯД: 410013299366744 WM: R193491431804
 
Ответить
Сообщениеalex808, просто уберите из макроса вызов формы, и я бы добавила очищение листа "сумма" в начало.
Внесла правки в макрос от devilkurs
[vba]
Код
Sub Макрос3()
'
' Макрос3 Макрос
'
' Сочетание клавиш: Ctrl+й
'
'    NameList = "": bStop = False
    ThisWorkbook.Worksheets("сумма").[a1].CurrentRegion.Offset(1).Clear'Очищаем лист
    For Each Sh In Array(Sheets("Лист2"), Sheets("Лист4"))
'        ВыборЛиста.Show (vbModal)
'        If bStop Then GoTo сюда:
        With Sh
            lLastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            .Range("A2:D" & lLastRow).Copy Sheets("сумма").Range("A" & Sheets("сумма").Cells(Sheets("сумма").Rows.Count, 1).End(xlUp).Row + 1)
        End With
        Application.CutCopyMode = False
    Next
сюда:
    With Application.ThisWorkbook.Worksheets("сумма")
        .AutoFilter.Sort.SortFields.Clear
        .AutoFilter.Sort.SortFields.Add _
            Key:=.Range("A1:A" & .Cells(.Rows.Count, 1).End(xlUp).Row), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        With .AutoFilter.Sort
            .Header = xlYes
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
    
        .Range("E2:E" & .Cells(.Rows.Count, 1).End(xlUp).Row).FormulaR1C1 = "=IFERROR(-LOOKUP(2,1/(R1C2:R[-1]C[-3]=RC[-3]),R1C4:R[-1]C[-1])+RC[-1],0)"
    End With
End Sub
[/vba]

Автор - Manyasha
Дата добавления - 31.08.2016 в 17:11
alex808 Дата: Среда, 31.08.2016, 17:41 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 37
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
просто уберите из макроса вызов формы, и я бы добавила очищение листа "сумма" в начало.

Спасибо большое!!!! Работает..Даже не думал, что так сильно изменится код, по сравнению с кодом, работающим на одну страницу
 
Ответить
Сообщение
просто уберите из макроса вызов формы, и я бы добавила очищение листа "сумма" в начало.

Спасибо большое!!!! Работает..Даже не думал, что так сильно изменится код, по сравнению с кодом, работающим на одну страницу

Автор - alex808
Дата добавления - 31.08.2016 в 17:41
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Объединение динамических таблиц на разных листах в третем (Макросы/Sub)
Страница 1 из 11
Поиск:

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