Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 10.02.2013
Сообщений: 27

Собрать данные из двух листов в один

28.02.2013, 17:12. Показов 2830. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребята, подправьте пожалуйста макрос, что-то не так делаю.
У меня есть 2 листа. Первый лист V1, второй U2. В этих листах данные, я фильтром выбираю то что мне нужно в каждом файле, затем копирую в лист TOTAL, все вроде нормально данные с одного листа копируются, а со второго нет. Еще момент, количество строк, ячеек в каждом листе будет постоянно меняться.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
Option Explicit
    Dim iLastRow As Integer
    Dim iLastRowTotal As Integer
    [B][/B]
    Sheets("V1").Select
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$O$20751").AutoFilter Field:=1, Criteria1:= _
        "результат"
    ActiveSheet.Range("$A$1:$O$20751").AutoFilter Field:=3, Criteria1:= _
        "регион", Operator:=xlOr, Criteria2:="=область"
    Range("G2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("TOTAL ").Select
    Range("B2").Select
    ActiveSheet.Paste
    Sheets("V1").Select
    
    Range("K2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL ").Select
    Range("C2").Select
    ActiveSheet.Paste
    Sheets("V1").Select
    
    Range("C2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL").Select
    Range("D2").Select
    ActiveSheet.Paste
    Sheets("V1").Select
    
    Range("E2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL ").Select
    Range("E2").Select
    ActiveSheet.Paste
    
    Sheets("U2").Select
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$AD$11985").AutoFilter Field:=4, Criteria1:= _
        "Назначено"
    
    ActiveSheet.Range("$A$1:$AD$11985").AutoFilter Field:=17, Criteria1:= _
        "=Регион", Operator:=xlOr, Criteria2:="=Область"
    
    ActiveSheet.Range("$A$1:$AD$11985").AutoFilter Field:=28, Criteria1:="="
    
    Range("N2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("TOTAL").Select
    Range("B" & iLastRowTotal + 1).Select
    ActiveSheet.Paste
    Sheets("U2").Select
    
    Range("J2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL").Select
    Range("C" & iLastRowTotal + 1).Select
    ActiveSheet.Paste
    Sheets("U2").Select
        Range("Q2").Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL").Select
    Range("D" & iLastRowTotal + 1).Select
    ActiveSheet.Paste
    Sheets("U2").Select
    Range("O2" & iLastRow).Select
    Range(Selection, Selection.End(xlDown)).Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("TOTAL").Select
    Range("E" & iLastRowTotal + 1).Select
    ActiveSheet.Paste
End Sub
Добавлено через 3 часа 35 минут
Подскажите пожалуйста, что нужно подправить????
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.02.2013, 17:12
Ответы с готовыми решениями:

Собрать данные из нескольких листов Excel на один лист
Добрый день! Подскажите как решить следующую задачку: Нужно собрать данные с листов Эксель, которые существуют в данном файле и вывести...

Как соединить данные с двух листов в один?
Здравствуйте. Есть 2 листа. Лист 1 : А В С 1 НомерГруппы Объект ...

Собрать данные из двух столбцов в один по условию. Обработка пустых значений
День добрый коллеги. Просьба помочь с оптимизацией. Необходимо собрать в один столбец данные из двух. Рабочее решение такое: ...

3
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
28.02.2013, 20:02
Лучьше бы пример приложить, легче будет.
А так, на ходу.
Учитывая, что
количество строк, ячеек в каждом листе будет постоянно меняться.
тогда у Вас здесь жесткая привязка
ActiveSheet.Range("$A$1:$O$20751")
а вот здесь уже более гибкая:
Range("G2").Select
Range(Selection, Selection.End(xlDown)).Select
А почему так?
И можна (и лучьше) это без Select.

Добавлено через 9 минут
Ups. Забыл написать, как без Select
Visual Basic
1
range(range("g2"),range("g2").end(xlDown).rows).copy [f1]
Добавлено через 31 минуту
Еще добавлю.
если использовать что-то наподобии этого, тогда по барабану, какой лист активный:
Visual Basic
1
2
3
4
5
6
7
8
with sheets("myFirst")
   .range(.range("g2"), .range("g2").end(xlDown).rows).copy
end with
 
with sheets("mySec").Cells(1,1) ' !!!! ???
   pasteSpecial paste:=xlPasteColumnWidths
   pasteSpecial paste:=xlPasteAll
end with
Но если все-таки нужно прыгать по листам, тогда лучьше применить массивы для исходных, всем (а их здесь три) листам присвоить переменные, и вперед.
Типа как:
Visual Basic
1
2
3
4
5
dim FirstSht as worksheet, SecSht as Worksheet, ResultSht as Worksheet
   set FirstSht =ActiveSheet
   set secSht = sheets("myFirst")
   set ResultSht = Sheets("Total")
   FirstSht.Activate: secSht.Activate: ResultSht.activate ' и т.д.
0
6998 / 2896 / 555
Регистрация: 19.10.2012
Сообщений: 8,804
28.02.2013, 22:30
.rows не нужно. Я думал, что вообще ругнётся - но нет, работает... Но лишнее.
И активировать листы в общем случае тоже совершенно лишнее (как и селекты).
Глубже без примера вникать не хочу.
1
4377 / 661 / 36
Регистрация: 17.01.2010
Сообщений: 2,134
28.02.2013, 22:48
Да, точно. Писал прямо в окне под конец работы. Опечатка. Спасибо, Hugo!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
28.02.2013, 22:48
Помогаю со студенческими работами здесь

Собрать с разных листов из плоских файлов в один отчет
Ребята привет,нужно консолидировать реестры с разных листов в один сводный отчет в отдельном листе. Реестры в виде плоских файлов:...

Собрать в один лист содержимое конкретной строки из нескольких листов одной книги
Добрый вечер Всем! Уважаемые господа, подскажите пожалуйста ....Что и На Что нужно поменять в коде,чтобы он собирал данные только с одной...

Собрать данные со всех листов на сводный лист по заданной дате
Здравствуйте. Помогите написать макрос. У меня есть 10 листов, каждый лист это данные по кампаниям,в каждом листе стоит дата по каждой...

С разных листов в одной книге собрать данные на новый лист
Добрый день. Прошу помощи. Необходимо с разных листов в одной книге EXCEL, собрать данные на новый лист. Спасибо, заранее всем кто...

Cоединить информацию из двух листов в один
Имеется два листа в excel с данными за каждый месяц за 2014 и 2013 год соответственно. Необходимо соединить два листа в третий таким...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru