Формулы могут работать с ячейками из других листов. Вам просто нужно указать перед ссылкой на ячейку имя листа и восклицательный знак. Например, следующая формула добавляет 12 к значению в ячейке С1, которая находится на листе Лист2: =Лист2!С1+12.
Что делать, если вам нужно вычислить сумму всех значений в С1, начиная с листа Лист2 и заканчивая листом Лист6? Следующая формула решает эту задачу: =СУММ(Лист2:Лист6!C1). В данном случае двоеточие разделяет название первого и последнего листов.
Для создания такой формулы выполните приведенные ниже действия.
Активизируйте ячейку, которая будет содержать формулу, и наберите =СУММ(.
Щелкните на вкладке первого листа (в нашем случае это Лист2) и выберите ячейку С1.
Нажмите Shift и щелкните на вкладке последнего листа (в нашем случае это Лист6).
Нажмите Enter, и формула будет введена в ячейку.
В шаге 2 вы можете выбрать диапазон, а не одну-единствениую ячейку. Например, эта формула возвращает сумму C1:F12 для всех листов от Лист2 до Лист6: =СУММ(Лист2:Лист6!С1:Р12).
Теперь я покажу вам интересный прием, который узнал при прочтении новостных конференций Excel и на обучение в Минске. Если вы хотите просуммировать одну и ту же ячейку со всех листов, кроме текущего, просто введите формулу наподобие этой: =СУММ(‘*’!C1). Звездочка служит подстановочным символом, который интерпретируется как «все листы, кроме этого одного». Когда вы нажмете клавишу Enter после ввода этой формулы, Excel преобразует формулу, чтобы она использовала фактические имена листов. Это работает, даже если активный лист находится где-нибудь в середине, между другими листами. Например, если книга состоит из шести листов и вы введете приведенную выше формулу в ячейку листа Лист3, Excel создаст следующую формулу: =СУММ(Лист1:Лист2!С1;Лист4:Лист6!C1).
Но это еще не все. Введите следующую формулу для нахождения суммы ячеек С1 во всех листах, которые начинаются со слова Регион: =СУММ(‘Регион*»!C1). Excel может преобразовать данную формулу во что-то наподобие этого: =СУММ(Регион1:Регион4!C1).
Вы также можете использовать подстановочный знак ? — он указывает на любой отдельный символ. Например, при вводе следующей формулы Excel создаст формулу, которая просуммирует значения, начиная с листа Лист1 и заканчивая листом Лист9 (названия, которые содержат одну цифру): =СУММ(‘Лист?’!C1). Этот прием не ограничивается функцией СУММ. Он работает и с другими функциями, такими как СРЗНАЧ, МИН, МАКС.
Функция ЛИСТ предназначена для возвращения номера конкретного листа с промежутком, который открывает доступ ко всей рабочей книге в MS Excel. Функция ЛИСТЫ предоставляет пользователю информацию о количестве листов, содержащихся в рабочей книге.
Предположим у нас имеется фирма DecArt в которой работают сотрудники и им ежемесячно начисляется зарплата. У данной фирмы имеются сведения о среднемесячной зарплате в Excel, а данные по ней размещены на разных листах: на листе 1 размещены данные о зарплате, на листе 2 премия в процентах. Нам необходимо вычислить размер премии в рублях, при том чтобы данные эти были размещены на втором листе.
Для начала рассмотрим пример работы с листами в формулах Excel. Пример 1:
- Создадим на листе 1 рабочей книги табличного процессора Excel таблицу, как показано на рисунке. Сведения о среднемесячной заработной плате:
- Далее на листе 2 рабочей книги подготовим область для размещения нашего результата — размера нашей премии в рублях, как показано на рисунке:
- Далее нам необходимо будет ввести в ячейку В2 формулу, изображенную на рисунке ниже:
Ввод данной формулы происходил следующим образом: для начала в ячейке В2 мы установили знак «=», затем кликнули на «Лист1» в нижнем левом углу рабочей книги и перешли на ячейку C3 на листе 1, далее ввели операцию умножения и перешли вновь на «Лист2» для того чтобы добавить процент.
Таким образом мы получили при расчете премии каждого сотрудника, причем исходные данные находились на одном листе, а расчет был произведен на другом листе. Данная формула окажется весьма полезной при работе с более длинными массивами данных в крупных организациях.
Функция ЛИСТЫ для подсчета количества листов в рабочей книге
Рассмотрим теперь пример работы функции ЛИСТЫ. Довольно часто бывает так, что в рабочей книге Excel расположено слишком много листов. Выяснить их точное количество визуально не представляется возможным, именно с этой целью и создана функция ЛИСТЫ.
В данной функции всего 1 аргумент – «Ссылка» да и то необязательный для заполнения. Если его не заполнять тогда функция возвращает общее количество листов, созданных в текущей рабочей книге файла Excel. При необходимости можно заполнить аргумент. Для этого в нем необходимо указать ссылку на рабочую книгу, в которой необходимо подсчитать общее количество листов, созданных в ней.
Пример2. Предположим у нас имеется фирма по производству мягкой мебели, и у нее есть множество документов, которые содержатся в рабочей книге Excel. Нам необходимо вычислить точное число этих документов, так как каждый из них имеет свое название, то для того чтобы визуально вычислить их количество потребуется время.
На рисунке ниже показано примерное количество листов:
Чтобы организовать подсчет всех листов, необходимо воспользоваться функцией ЛИСТЫ. Просто ставим знак равенства «=» и вписываем функцию, не заполняя ее аргументов в скобках. Вызов данной функции показан ниже на рисунке:
В результате получим следующее значение: 12 листов.
Таким образом мы узнали, что в нашей фирме имеется 12 документов, содержащихся в рабочей книге Excel. Этот простой пример наглядно иллюстрирует работу функции ЛИСТЫ. Данная функция может стать полезной для руководителей, офисных сотрудников, менеджеров по продажам.
Ссылки на другие листы в шаблонах документов
Пример 3. Имеются данные о расходах на банкет компании занимающейся выездным обслуживанием. Необходимо произвести расчет общей стоимости банкета, а также общий выход порций блюд, и вычислить общее количество листов в документе.
- Создадим таблицу «Банкетное меню», общий вид которой представлен на рисунке ниже:
- Аналогичным образом создадим таблицы на разных листах «Общая стоимость» и «Общий выход»:
- При помощи формулы со ссылками на другие листы произведем расчет общей стоимости банкетного меню:
- Перейдем на лист «Общий выход» и путем умножения ячеек веса одной порции, находящегося на листе 2 и общего количества, находящегося на листе 1 произведем расчет общего выхода:
Читайте также: Примеры использования функций ЛИСТ и ЛИСТЫ в формулах Excel.
В результате у нас получился простейший шаблон для подсчета расходов на 1 банкет.
Один из читателей нашего сайта SirExcel задал вопрос, который может встречаться очень часто. Вопрос заключался в следующем «Как сделать так, чтобы на одном листе показывалась информация из определенной ячейки к примеру $A$1 но с каждого листа из книги? Листов очень много надо сделать сводный список содержимого определенной ячейки со всех листов.»
Я как раз собирался написать о том, как работает функция ДВССЫЛ, почему бы не рассмотреть ее именно на этом примере.
Итак, мы имеем файл Excel, в котором много листов. Давайте рассмотрим простой пример, где названия листов у нас не менялись. То есть у нас есть Лист1, Лист2, Лист3 и так далее.
Допустим, что на каждом листе (Лист1-Лист5) у нас есть данные по выручке 5 различных магазинов в виде одинаковых таблиц данных.
На листе 6 есть результирующая таблица, где нам необходимо заполнить ее данными, взяв их со всех листов.
Таким образом, чтобы заполнить данные за январь нам необходимо взять данные по выручке магазинов, находящихся в ячейке B2, но на 5 различных листов.
Конечно, в нашем примере это можно было бы сделать в ручную, указав просто ссылки на соответствующие значения, но если листов очень много, или данных очень много, то вручную это сделать будет очень затруднительно.
Существует различные способы решить данную задачу, например, с помощью простенького макроса, который можно записать макрорекодером. Ну а мы с вами для решения задачи будет использовать функцию ДВССЫЛ.
ДВССЫЛ – функция, которая возвращает ссылку заданную текстовой строкой.
Чтобы понять принцип действия данной функцию, давайте рассмотрим такой пример.
Посмотрите на рисунок ниже. В ячейке А1 написан текст D4, а в самой ячейке D4 указано число 9999. Если мы напишем формулу ДВССЫЛ(A1), то в результате получим число 9999. То же самое мы получим если напишем формулу так: =ДВССЫЛ("D4")
То есть мы написали текстом адрес ячейки D4 и функция ДВССЫЛ вернула нам то значение, которое находится по данному адресу (D4).
Надеюсь, все стало более понятным. Теперь давайте рассмотрим на нашем примере. Чтобы заполнить данные за январь с разных листов нам необходимо прописать следующие ссылки на ячейки.
=Лист1!B2 (Выручка за январь магазина 1)
=Лист2! В2 (Выручка за январь магазина 2) и т.д.
Но сложность заключается в том, что если ячейку просто протянуть вниз, то Лист1 не будет меняться на Лист2 и так далее.
Если мы пропишем формулу
ДВCСЫЛ("Лист1!B2"), ДВCСЫЛ("Лист2!B2")
и так далее, то функция будет возвращать нам то же самое, но это так же не решает нашу проблему, ведь «Лист1!B2» прописан обычным текстом и так же не будет изменяться при протягивании.
Для решения нашей задачи мы разделим текст «Лист1!B2» на две части (отдельно «Лист1» и отдельно «!B2» — обратите внимание на восклицательный знак во второй части текста) и потом их склеим. Текст Лист1, Лист2 и так далее мы пропишем напротив соответствующих магазинов, при этом написав Лист1, мы сможем просто протянуть ячейку вниз и автоматически получить список Лист1, Лист2 и так далее.
Теперь сцепим этот текст внутри функции ДВССЫЛ с помощью знака & и получим формулу, которая будет автоматически протягиваться и при этом будут подтягиваться данные из одной и той же ячейки, но разных листов.
=ДВССЫЛ(A2&"!B2")
Итоговая формула выглядит именно так, но я специально расписал с самого начала по шагам, чтобы было понятно из чего состоит данная формула. В принципе, этого уже достаточно, чтобы за короткий срок решить задачу, указанную в начале статьи. Чтобы заполнить данные за февраль, нам необходимо в ячейке D2 написать такую же формулу, но поменять текст «!B2» на «!B3»
=ДВССЫЛ(A2&"!B3")
и протянуть вниз, аналогично за март.
Но никто нам не мешает немного усложнить формулу и заполнить ее автоматически, протянув формулу вниз, а затем вправо. Тут я не буду подробно описывать, но если вы разобрались с предыдущим примером, то легко поймете и данный.
Итак, мы решили задачу, как быстро заполнить данные за определенный месяц, но нам необходимо заполнить данные за остальные месяца. Мы знаем, что данные за Январь соответствуют ячейке B2, февраль — B3, Март — B4. То есть буква «B» остается неизменной, меняется лишь цифра. Зная это мы просто разобьем текст внутри ссылки ДВССЫЛ не на 2 части, а на три. Добавим дополнительно строку над таблицей и напишем сверху цифры соответствующие ячейки месяца. Пропишем формулу.
=ДВССЫЛ(A3& «!B»&C1), где A3 — это текст «Лист1», «!B» — это неизменный текст и С1 — это цифра 2. Все это объединено с помощью знака & в общий текст «Лист1!B2». Нам также потребуется закрепить столбец A (с помощью знака $), чтобы он не менялся при протягивании формулы вправо и строку 1, чтобы она не менялась при протягивании формулы вниз. Мы получаем следующую итоговую формулу.
=ДВССЫЛ($A3&"!B"&C$1)
которую можно протянуть вправо и вниз.
Заметки по теме:
- Если бы листы назывались у нас Магазин 1, Магазин 2 и так далее, то дополнительный столбец со словами Лист1, Лист2 и так далее нам бы не потребовался.
- Функцию ДВССЫЛ используют часто тогда, когда требуется изменить ссылку на ячейку в формуле, не изменяя саму формулу.
Если вам понравилась статья, пожалуйста, нажмите +1 и «Мне нравится». Так же подписывайтесь на нашу рассылку или вступайте в нашу группу ВКонтакте, чтобы не пропустить наши следующие уроки по Excel
SirExcel — безграничные возможности Excel
Как посчитать сумму с разных листов в Excel?
Изучим возможности для суммирования данных из ячеек с разных листов книги с помощью использования трехмерных ссылок в Excel.
Приветствую всех, уважаемые читатели блога TutorExcel.Ru.
Практически каждый из нас при работе в Excel хотя бы раз наверняка применял операцию сложения с помощью оператора плюс «+» и различных функций (СУММ, СУММЕСЛИ, СУММЕСЛИМН и т.п.).
В связи с этим часто можно столкнуться с задачей, когда нужно просуммировать данные из одних и тех же ячеек с нескольких листов. К примеру, подвести общий итог для всех филиалов или отделов компании (коих может быть очень много), посчитать сумму за год по всем месяцам, где каждая часть с данными расположена на отдельном листе книги.
К решению этой задачи можно подходить по-разному, рассмотрим несколько вариантов как мы это можно сделать — от медленного и ручного до быстрого и полуавтоматического.
Как сложить листы в Excel?
Вариант 1. Ручной ввод.
Начнем с одной стороны с медленного варианта, но с другой стороны с более понятного и наглядного способа.
Для примера возьмем простую задачу и сложим данные ячейки A1 с трех листов: Лист1, Лист2 и Лист3. Для этого поочередно в формулу записываем ссылки на ячейку с разных листов и знаки сложения «+»:
Это совсем простой вариант. Еще один вариант записи можно аналогично реализовать с помощью функции СУММ:
В реализуемых нами вариантах в общем и целом все хорошо, за исключением большой ручной работы при прощелкивании всех нужных для суммирования ячеек.
Как это часто бывает если нужно посчитать сумму для двух или трех листов, то вышеописанный способ отлично подойдет. Но если усложнить задачу и представить подобный пример не для 3, а, например, для 30 листов, то процесс уже несколько затянется.
Поэтому перейдем к чуть более сложному на первый взгляд варианту, но гораздо более быстрому с точки зрения трудовых и временных затрат.
Вариант 2. Полуавтоматический ввод.
Повторно воспользуемся функцией СУММ, но в этот раз запишем ссылку на листы через двоеточие:
В этом случае общее количество суммируемых листов для нас уже не так важно, главное знать только начальный и конечный.
Поэтому запись для сложения 10 или 20 листов будет примерно такой же — ИмяПервогоЛиста:ИмяПоследнегоЛиста!Диапазон.
Чуть более подробно остановимся на логике формирования формулы. Напомню, что оператор двоеточие в Excel служит для объединения диапазона, который образует ссылку на все ячейки находящиеся между первой и последней (включая сами ячейки). Например, диапазон A1:A10 обозначает двумерную ссылку, в которую попадают все ячейки между первой (A1) и последней (A10).
При добавлении еще одной размерности в виде листов мы получаем так называемую трехмерную ссылку. К примеру, диапазон Лист1:Лист3!A1:A10 содержит все ячейки от Лист1!A1:A10 до Лист3!A1:A10.
Таким образом в нашем примере суммируются все ячейки A1 от Лист1 до Лист3. Но при применении такого способа суммирования есть некоторые тонкости, которые желательно нужно помнить, чтобы случайно не допустить ошибку, давайте подробнее про них поговорим.
Особенности трехмерных ссылок
Как мы уже говорили ранее, при применении трехмерных ссылок нужен только первый и последний лист, промежуточные листы между ними в записи никак не участвуют. Отсюда и возникают следующие тонкости:
- Добавление/копирование листа. Если добавить новый лист или скопировать уже существующий и вставить его между первым и последним (используемых в формуле), то он автоматически будет участвовать в расчете.
Т.е. сама формула не поменяется, а значение вполне может измениться, если на новом листе в тех же ячейках содержатся данные; - Удаление листа. Аналогичный случай примеру выше. При удалении листа формула не изменится, а расчет поменяется в зависимости от удаленных данных (если удалить начальный или конечный листы, то формула изменится, промежуточный — формула останется неизменной);
- Перемещение листа. При перемещении листа в другое место книги формула не изменится, но поменяется набор листов между ними (либо добавятся новые, либо удалятся текущие).
Если описание покажется несколько сложным, в этом случае попробуйте поэкспериментировать с формулой и перестановкой листов на конкретном примере и поймите по какому принципу она работает.
Использование трехмерных ссылок не ограничивается только функциями для сложения данных, а можно использовать большинство математических функций. Поэтому если стоит аналогичная задача для нахождения, к примеру, среднего арифметического или наибольшего с наименьшим, то без проблем применяйте.
Спасибо за внимание!
Если у вас есть мысли или вопросы по теме статьи — пишите и спрашивайте в комментариях.
Microsoft Excel
трюки • приёмы • решения
Как суммировать данные с разных листов книг Excel
Формулы могут работать с ячейками из других листов. Вам просто нужно указать перед ссылкой на ячейку имя листа и восклицательный знак. Например, следующая формула добавляет 12 к значению в ячейке С1 , которая находится на листе Лист2: =Лист2!С1+12 .
Что делать, если вам нужно вычислить сумму всех значений в С1, начиная с листа Лист2 и заканчивая листом Лист6? Следующая формула решает эту задачу: =СУММ(Лист2:Лист6!C1) . В данном случае двоеточие разделяет название первого и последнего листов.
Для создания такой формулы выполните приведенные ниже действия.
- Активизируйте ячейку, которая будет содержать формулу, и наберите =СУММ( .
- Щелкните на вкладке первого листа (в нашем случае это Лист2) и выберите ячейку С1 .
- Нажмите Shift и щелкните на вкладке последнего листа (в нашем случае это Лист6).
- Нажмите Enter, и формула будет введена в ячейку.
В шаге 2 вы можете выбрать диапазон, а не одну-единствениую ячейку. Например, эта формула возвращает сумму C1:F12 для всех листов от Лист2 до Лист6: =СУММ(Лист2:Лист6!С1:Р12) .
Теперь я покажу вам интересный прием, который узнал при прочтении новостных конференций Excel и на обучение в Минске. Если вы хотите просуммировать одну и ту же ячейку со всех листов, кроме текущего, просто введите формулу наподобие этой: =СУММ(‘*’!C1) . Звездочка служит подстановочным символом, который интерпретируется как «все листы, кроме этого одного». Когда вы нажмете клавишу Enter после ввода этой формулы, Excel преобразует формулу, чтобы она использовала фактические имена листов. Это работает, даже если активный лист находится где-нибудь в середине, между другими листами. Например, если книга состоит из шести листов и вы введете приведенную выше формулу в ячейку листа Лист3, Excel создаст следующую формулу: =СУММ(Лист1:Лист2!С1;Лист4:Лист6!C1) .
Но это еще не все. Введите следующую формулу для нахождения суммы ячеек С1 во всех листах, которые начинаются со слова Регион: =СУММ(‘Регион*»!C1) . Excel может преобразовать данную формулу во что-то наподобие этого: =СУММ(Регион1:Регион4!C1) .
Вы также можете использовать подстановочный знак ? — он указывает на любой отдельный символ. Например, при вводе следующей формулы Excel создаст формулу, которая просуммирует значения, начиная с листа Лист1 и заканчивая листом Лист9 (названия, которые содержат одну цифру): =СУММ(‘Лист?’!C1). Этот прием не ограничивается функцией СУММ. Он работает и с другими функциями, такими как СРЗНАЧ, МИН, МАКС.
Сумма одной и той же ячейки на нескольких листах
Задача: у вас есть 12 листов с одинаковой структурой данных, по одному на каждый месяц. Вы бы хотели просуммировать одну и ту же ячейку на каждом листе. Есть ли способ лучше, чем использование =Янв!B4+Фев!B4+Мар!B4+…+Дек!B4?
Решение: вы можете использовать «3D-формулу», например, =СУММ(Янв:Дек!B4), как показано на рис. 1.
Рис. 1. 3D-формулу для суммирования одной и той же ячейки на нескольких листах
Скачать заметку в формате Word или pdf, примеры в формате Excel
Если в имени первого и/или последнего листа содержится пробел, используйте апострофы вокруг пары имен листов: =СУММ( ‘ Янв 2009:Дек ‘ !B5), как показано на рис. 2. Любопытно, что, если пробел есть в имени любого промежуточного листа, апострофы не требуются. Более того, если вы введете апострофы, когда они не требуются, Excel автоматически их уберет.
Рис. 2. Используйте апострофы, если в имени листа есть пробел
Вы можете легко скопировать эту формулу в другие ячейки на листе Итоги.
Подводный камень: не размещайте сводный лист между листами Янв и Дек. Это приведет к циклической ссылке (подробнее о борьбе с последней см. Как найти циклическую ссылку).
Дополнительные сведения: можно создать именованный диапазон, который ссылается на 3D-область. Для этого перейдите к ячейке B4 на лист Янв. Пройдите по меню ФОРМУЛА –> Присвоить имя. В открывшемся окне Создание имени (рис. 3) перейдите в поле Диапазон путем многократного нажатия клавиши Табуляция. При этом всё содержимое поле Диапазон становится выделенным. Удерживая нажатой клавишу Shift кликните на лист Дек. Обратите внимание, что на рис. 3 все листы от Янв по Дек выделены. Нажмите Ok.
Рис. 3. Присвоение имени 3D-диапазону
После этого формулы приобретают «человеческий» вид. Например, =СУММ(Объем_продаж).
Как просуммировать данные с нескольких листов, в том числе по условию
В данной статье я хочу рассказать, как можно просуммировать данные на одном листе из других листов. К примеру: на листах Январь, Февраль и Март расположены данные по продажам, а под ними итог. Допустим, это будет ячейка D7. Если структура всех таблиц одинакова (одинаковое кол-во строк, товар может различаться) и Итог расположен во всех таблицах в одной ячейке, то можно воспользоваться простой формулой:
=СУММ(Январь:Март!D7)
Подобная ссылка на диапазоны называется трехмерной ссылкой. Если между листом Январь и Март добавить еще какой-нибудь лист — то данные с него будут также автоматически просуммированы. Поэтому необходимо следить, чтобы указывались только нужные листы. Минус в том, что таким образом можно просуммировать данные только ячеек листа, расположенных в одном и том же диапазоне(т.е. со всех листов будет взята сумма всех ячеек конкретного диапазона). Так же, трехмерные ссылки не могут быть созданы при помощи ДВССЫЛ(INDIRECT) для динамического указания имен первого и последнего листа.
Но, если необходимо будет просуммировать данные по отдельным товарам со всех листов, а товар расположен в хаотичном порядке, разном для каждого листа и количество строк различается, то здесь такая формула не подойдет. Можно воспользоваться формулой массива, которая несколько неудобна именно в таком виде:
=СУММПРОИЗВ(СУММЕСЛИ(ДВССЫЛ(<«Январь»:»Февраль»:»Март»:»Апрель»:»Май»:»Июнь»>&»!B3:B100″); B2 ;ДВССЫЛ(<«Январь»:»Февраль»:»Март»:»Апрель»:»Май»:»Июнь»>&»!C3:C100″)))
«Январь»:»Февраль»:»Март»:»Апрель»:»Май»:»Июнь» — имена листов, с которых происходит суммирование. Не буду останавливаться подробно на всех вложенных функциях. Про СУММЕСЛИ можно прочитать в этой статье. ДВССЫЛ используется для создания ссылки на диапазон, состоящей из имени листа и адреса ячеек: Январь!B3:B100, Февраль!B3:B100, Март!B3:B100, Апрель!B3:B100, Май!B3:B100, Июнь!B3:B100 . Т.е. мы в формуле переибраем все указанные листы и диапазоны в них.
Важно: если в имени листа встречается пробел, либо иной знак препинания, то имя листа необходимо заключать в апострофы: «‘Январь 2014′»:»‘Февраль 2014′»:»Март»:»Апрель»:»Май»:»Июнь»
либо ставить апострофы заранее для всех листов:
ДВССЫЛ(» ‘ «&<«Январь»:»Февраль»:»Март»:»Апрель»:»Май»:»Июнь»>&» ‘ !C3:C100″)
B3:B100 — диапазон с критериями(при необходимости указать больше строк).
C3:C100 — диапазон суммирования(при необходимости указать больше строк).
В чем главное неудобство — необходимо так или иначе указывать листы, с которых суммировать. Это очень неудобно, если листов много. Во вложении ниже эта формула представлена в двух вариантах: как выше и с использованием дополнительного столбца для перечисления листов (формула в данном случае получается более универсальной и короткой).
Скачать пример суммирования с листов формулой
Tips_All_SumIf_AllSheets_Formula.xls (67,5 KiB, 7 735 скачиваний)
Но в приложенном примере тоже стоит учитывать один момент: при ссылке на диапазон с именами листов, в этом диапазоне не должно быть:
1. Пустых ячеек
2. Имен листов, которые заведомо отсутствуют в книге
При несоблюдении этих правил формула вернет ошибку #ССЫЛКА (#REF!)
Возможно, есть и иные способы суммирования формулой. Может даже есть способ суммировать, не указывая имена листов, но у меня не получилось так сделать без использования VBA. Поэтому я написал свою пользовательскую функцию:
Function All_SumIf(rRange As Range, rCriteria As Range, rSumRange As Range, Optional bAllSh As Boolean = True) Dim wsSh As Worksheet, sRange As String, sSumRange As String sRange = Right(rRange.Address, Len(rRange.Address) — InStr(rRange.Address, «!»)) sSumRange = Right(rSumRange.Address, Len(rSumRange.Address) — InStr(rSumRange.Address, «!»)) For Each wsSh In Sheets If bAllSh Then If wsSh.Name <> Application.Caller.Parent.Name Then All_SumIf = All_SumIf + Application.SumIf(wsSh.Range(sRange), rCriteria, wsSh.Range(sSumRange)) End If Else If wsSh.Index Alt + F11 ) -создать стандартный модуль(Insert —Module) и в него вставить скопированный текст. После чего функцию можно будет вызвать из Диспетчера функций( Shift + F3 ), отыскав её в категории Определенные пользователем (User Defined Functions) .
Аргументы функции аналогичны стандартной СУММЕСЛИ, только в конце добавлен еще один, необязательный.
rRange — Ссылка на диапазон ячеек. Указывается диапазон значений, среди которых необходимо искать критерий.
rCriteria — Ссылка на одну ячейку. Указывается ячейка, в которой содержится значение, данные по которому надо просуммировать.
rSumRange — Ссылка на диапазон ячеек. Указывается диапазон сумм или чисел, которые необходимо просуммировать на основании критерия.
bAllSh — Необязательный аргумент. Если не указан, или указано значение 1 или ИСТИНА, то будут суммироваться значения со всех листов, кроме листа, на котором записана функция. Если указано значение 0 или ЛОЖЬ, то будут суммироваться значения с листов, расположенных до листа, на котором записана функция.
Применение обеих функций вы найдете в примере к статье.
Скачать пример
Tips_All_SumIf_Few_Sheets.xls (57,5 KiB, 3 745 скачиваний)
Дополнил статью функцией, которая суммирует данные только с указанных листов, либо со всех, кроме листа с функцией:
Function All_SumIf(rRange As Range, rCriteria As Range, rSumRange As Range, Optional sSheets = «») Dim wsSh As Worksheet, sRange As String, sSumRange As String, asSheets, li As Long sRange = Right(rRange.Address, Len(rRange.Address) — InStr(rRange.Address, «!»)) sSumRange = Right(rSumRange.Address, Len(rSumRange.Address) — InStr(rSumRange.Address, «!»)) If sSheets = «» Then For Each wsSh In Worksheets If wsSh.Name <> Application.Caller.Parent.Name Then sSheets = sSheets & «?» & wsSh.Name Next wsSh sSheets = Mid$(sSheets, 2) End If asSheets = Split(sSheets, «?») For li = LBound(asSheets) To UBound(asSheets) Set wsSh = Sheets(asSheets(li)) If Not wsSh Is Nothing Then All_SumIf = All_SumIf + Application.SumIf(wsSh.Range(sRange), rCriteria, wsSh.Range(sSumRange)) End If Next li End Function
rRange — Ссылка на диапазон ячеек. Указывается диапазон значений, среди которых необходимо искать критерий.
rCriteria — Ссылка на одну ячейку. Указывается ячейка, в которой содержится значение, данные по которому надо просуммировать.
rSumRange — Ссылка на диапазон ячеек. Указывается диапазон сумм или чисел, которые необходимо просуммировать на основании критерия.
sSheets — Необязательный аргумент. Указываются имена листов книги, с которых надо суммировать данные. Имена листов должны быть записаны через вопросительный знак: Февраль?Март. Если аргумент не указан или равен пустой ячейке, то будут суммироваться значения со всех листов, кроме листа, на котором записана функция.
Скачать пример
Tips_All_SumIf_Show_Sheets.xls (59,5 KiB, 2 626 скачиваний)
Очередное дополнение статьи — функция, в которой помимо перечисления листов можно указать книгу, в которой эти листы просматривать:
Function All_SumIf(rRange As Range, rCriteria As Range, rSumRange As Range, Optional sSheets = «», Optional wsAnotherWB As String = «») Dim wsSh As Worksheet, sRange As String, sSumRange As String, asSheets, li As Long Dim wbB As Workbook If wsAnotherWB = «» Then Set wbB = Application.Caller.Parent.Parent Else Set wbB = Workbooks(wsAnotherWB) End If sRange = Right(rRange.Address, Len(rRange.Address) — InStr(rRange.Address, «!»)) sSumRange = Right(rSumRange.Address, Len(rSumRange.Address) — InStr(rSumRange.Address, «!»)) If sSheets = «» Then For Each wsSh In wbB.Worksheets If wsSh.Name <> Application.Caller.Parent.Name Then sSheets = sSheets & «?» & wsSh.Name Next wsSh sSheets = Mid$(sSheets, 2) End If asSheets = Split(sSheets, «?») For li = LBound(asSheets) To UBound(asSheets) Set wsSh = wbB.Sheets(asSheets(li)) If Not wsSh Is Nothing Then All_SumIf = All_SumIf + Application.SumIf(wsSh.Range(sRange), rCriteria, wsSh.Range(sSumRange)) End If Next li End Function
Аргументы и их использование полностью совпадают с описанием выше. Опишу только последний аргумент:
wsAnotherWB — Необязательный аргумент. Указываются имя книги, в которой будут просматриваться листы, указанные параметром sSheets. Если аргумент wsAnotherWB не указан — листы просматриваются в книге, с листа которой вызвана функция. Если какого-либо из указанных листов не будет в указанной книге — функция вернет ошибку.
Статья помогла? Поделись ссылкой с друзьями!
Excel At Excel вып.3: Собираем данные с разных листов
Дано: 22 таблицы унифицированного формата с перечнем помещений от 22 дочерних предприятий.
Задача: сделать сводную таблицу с данными всех 22 таблиц
Итак, решение. Есть три варианта решения данной задачи. Первый — использовать встроенную (начиная с excel 2013) надстройку PowerPivot (об этом методе мы поговорим позднее). Второй — посредством сводной таблицы через несколько диапазонов консолидации. Не люблю этот метод, т.к. такая сводная таблица имеет существенно более ограниченный функционал по сравнению с простой сводной таблицей. Наконец, третий вариант — это создать общую таблицу с использованием функции INDIRECT (ДВССЫЛ). Этому методу и посвятим сегодня наш пост.
Что мы имеем? 22 одинаковых по формату таблицы на отдельных листах и с разным количеством строк в каждой. Соответственно, для построения общей таблицы нам надо решить следующие «проблемы»:
1) как заставить общую таблицу «переключаться» с одного листа данных на другой?;
2) как заставить ее делать это в нужный момент (когда закончились строки на одном листе)?
Начнем со второго вопроса, т.к. ответ на него мы уже знаем. Это циклы, о которых мы подробно говорили в выпуске 2 «Циклы в Excel без VBA». Для решения проблемы достаточно в наш файл добавить лист с перечнем всех обществ, соответствующими названиями листов и количеством подсчетом количества строк на каждом таком листе.
Обратите внимание на формулу в столбце Кол-во записей. Мы могли бы использовать просто COUNTA (СЧЁТА) со ссылкой на каждый лист. Но это потребует времени для «линковки» каждого листа. Плюс мы с вами готовим универсальные решения, которые будут работать в независимости от количества листов.
Именно для этого в функцию COUNTA (СЧЁТА) и внедряется эта чуднАя функция INDIRECT (ДВССЫЛ). Остановимся на ней подробнее.
Функция имеет, по сути, единственный параметр — ref_text (ссылка_на_текст). Что делает эта функция? Всего-навсего преобразует текст в ссылку на ячейку. То есть она преобразует текст, например, «А1» в ссылку и возвращает значение ячейки А1.
Соответственно, зная несложные правила работы с текстом в Excel, мы можем легко сделать текст внутри изменяемым, а значит можем сделать и изменяемыми ссылки, которые будет возвращать функция INDIRECT (ДВССЫЛ).
Разберем пример выше. Функция INDIRECT (ДВССЫЛ) имеет следующий вид:
Чтобы понять, что означает текст внутри нее, давайте вспомним, как выглядит в Excel ссылка на ячейку на другом листе. Вот так:
Соответственно, в нашем случае у нас неизменен столбец B:B, а вот название листа меняется. Для «автоматизации» формулы заменяем Название листа на ссылку на название листа с данными по соответствующему обществу (столбец Название листа). Получаем следующее:
где все, что подчеркнуто — текст, а выделено жирным — ссылки.
ВАЖНО! Обратите внимание на кавычки и конкатенацию («склеивание») при помощи амперсента. Не забудьте, что текст вносится в кавычках и соединяется со ссылками при помощи символа &.
Получается, что INDIRECT (ДВССЫЛ) получает название листа из ячеек в столбце А:А (Название листа), а диапазон у нас прописан фиксированно текстом (В:В). COUNTA (СЧЁТА) же просто считает количество строк в столбце В:В на соответствующем листа за вычетом заголовка.
Перейдем к формированию общей таблицы. Как вы уже наверное прикинули, у нас будет два вложенных цикла: один — количество обществ, второй — количество записей на листе данных по соответствующему обществу. Соответственно, нам потребуются два вспомогательных столбца (определим их в столбцы А и В). Ровно так же, как мы делали на примере в выпуске 2 «Циклы в Excel без VBA», пишем формулу первого цикла:
=IF(A2=»»;»»;IF(COUNTIF($A$2:A2;A2)=OFFSET(‘Список обществ’!$E$2;A2-1;0);IF(A2+1>COUNTA(‘Список обществ’!A:A)-1;»»;A2+1);A2))
Затем пишем формулу второго цикла:
Далее при помощи уже знакомой нам функции OFFSET (СМЕЩ) заполняем столбцы из таблицы на листе Список обществ.
Осталось подтянуть данные с 22 листов по обществам. Тут нам опять поможет OFFSET (СМЕЩ), но уже в паре с INDIRECT (ДВССЫЛ).
OFFSET (СМЕЩ) передает в формулу название листа, а конструкция B2+1 — номер строки в столбце Е на том листе.
ВАЖНО! Обратите внимание, что OFFSET (СМЕЩ) вкладывается внутрь INDIRECT (ДВССЫЛ), а не наоборот.
Консолидация (объединение) данных из нескольких таблиц в одну
Способ 1. С помощью формул
Имеем несколько однотипных таблиц на разных листах одной книги. Например, вот такие:
Необходимо объединить их все в одну общую таблицу, просуммировав совпадающие значения по кварталам и наименованиям.
Самый простой способ решения задачи «в лоб» — ввести в ячейку чистого листа формулу вида
=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3
которая просуммирует содержимое ячеек B2 с каждого из указанных листов, и затем скопировать ее на остальные ячейки вниз и вправо.
Если листов очень много, то проще будет разложить их все подряд и использовать немного другую формулу:
=СУММ(‘2001 год:2003 год’!B3)
Фактически — это суммирование всех ячеек B3 на листах с 2001 по 2003, т.е. количество листов, по сути, может быть любым. Также в будущем возможно поместить между стартовым и финальным листами дополнительные листы с данными, которые также станут автоматически учитываться при суммировании.
Способ 2. Если таблицы неодинаковые или в разных файлах
Если исходные таблицы не абсолютно идентичны, т.е. имеют разное количество строк, столбцов или повторяющиеся данные или находятся в разных файлах, то суммирование при помощи обычных формул придется делать для каждой ячейки персонально, что ужасно трудоемко. Лучше воспользоваться принципиально другим инструментом.
Рассмотрим следующий пример. Имеем три разных файла (Иван.xlsx, Рита.xlsx и Федор.xlsx) с тремя таблицами:
Хорошо заметно, что таблицы не одинаковы — у них различные размеры и смысловая начинка. Тем не менее их можно собрать в единый отчет меньше, чем за минуту. Единственным условием успешного объединения (консолидации) таблиц в подобном случае является совпадение заголовков столбцов и строк. Именно по первой строке и левому столбцу каждой таблицы Excel будет искать совпадения и суммировать наши данные.
Для того, чтобы выполнить такую консолидацию:
- Заранее откройте исходные файлы
- Создайте новую пустую книгу (Ctrl + N)
- Установите в нее активную ячейку и выберите на вкладке (в меню) Данные — Консолидация (Data — Consolidate). Откроется соответствующее окно:
- Установите курсор в строку Ссылка (Reference) и, переключившись в файл Иван.xlsx, выделите таблицу с данными (вместе с шапкой). Затем нажмите кнопку Добавить (Add) в окне консолидации, чтобы добавить выделенный диапазон в список объединяемых диапазонов.
- Повторите эти же действия для файлов Риты и Федора. В итоге в списке должны оказаться все три диапазона:
Обратите внимание, что в данном случае Excel запоминает, фактически, положение файла на диске, прописывая для каждого из них полный путь (диск-папка-файл-лист-адреса ячеек). Чтобы суммирование происходило с учетом заголовков столбцов и строк необходимо включить оба флажка Использовать в качестве имен (Use labels). Флаг Создавать связи с исходными данными (Create links to source data) позволит в будущем (при изменении данных в исходных файлах) производить пересчет консолидированного отчета автоматически.
После нажатия на ОК видим результат нашей работы:
Наши файлы просуммировались по совпадениям названий из крайнего левого столбца и верхней строки выделенных областей в каждом файле. Причем, если развернуть группы (значками плюс слева от таблицы), то можно увидеть из какого именно файла какие данные попали в отчет и ссылки на исходные файлы:
Ссылки по теме
- Макрос для автоматической сборки данных с разных листов в одну таблицу
- Макрос для сборки листов из нескольких файлов
Формулы могут работать с ячейками из других листов. Вам просто нужно указать перед ссылкой на ячейку имя листа и восклицательный знак. Например, следующая формула добавляет 12 к значению в ячейке С1
, которая находится на листе Лист2: =Лист2!С1+12
.
Что делать, если вам нужно вычислить сумму всех значений в С1, начиная с листа Лист2 и заканчивая листом Лист6? Следующая формула решает эту задачу: =СУММ(Лист2:Лист6!C1)
. В данном случае двоеточие разделяет название первого и последнего листов.
Для создания такой формулы выполните приведенные ниже действия.
- Активизируйте ячейку, которая будет содержать формулу, и наберите
=СУММ(
. - Щелкните на вкладке первого листа (в нашем случае это Лист2) и выберите ячейку
С1
. - Нажмите Shift и щелкните на вкладке последнего листа (в нашем случае это Лист6).
- Нажмите Enter, и формула будет введена в ячейку.
В шаге 2 вы можете выбрать диапазон, а не одну-единствениую ячейку. Например, эта формула возвращает сумму C1:F12
для всех листов от Лист2 до Лист6: =СУММ(Лист2:Лист6!С1:Р12)
.
Теперь я покажу вам интересный прием, который узнал при прочтении новостных конференций Excel и на обучение в Минске. Если вы хотите просуммировать одну и ту же ячейку со всех листов, кроме текущего, просто введите формулу наподобие этой: =СУММ('*'!C1)
. Звездочка служит подстановочным символом, который интерпретируется как «все листы, кроме этого одного». Когда вы нажмете клавишу Enter после ввода этой формулы, Excel преобразует формулу, чтобы она использовала фактические имена листов. Это работает, даже если активный лист находится где-нибудь в середине, между другими листами. Например, если книга состоит из шести листов и вы введете приведенную выше формулу в ячейку листа Лист3, Excel создаст следующую формулу: =СУММ(Лист1:Лист2!С1;Лист4:Лист6!C1)
.
Но это еще не все. Введите следующую формулу для нахождения суммы ячеек С1 во всех листах, которые начинаются со слова Регион: =СУММ('Регион*"!C1)
. Excel может преобразовать данную формулу во что-то наподобие этого: =СУММ(Регион1:Регион4!C1)
.
Вы также можете использовать подстановочный знак ? — он указывает на любой отдельный символ. Например, при вводе следующей формулы Excel создаст формулу, которая просуммирует значения, начиная с листа Лист1 и заканчивая листом Лист9 (названия, которые содержат одну цифру): =СУММ(‘Лист?’!C1). Этот прием не ограничивается функцией СУММ. Он работает и с другими функциями, такими как СРЗНАЧ, МИН, МАКС.
Консолидация данных с нескольких листов
Смотрите такжеПохоже на Вашу 0 список 1048576 значениями.avFiles = Application.GetOpenFilename(«Excel files(*.csv*),*.csv*», — их названия с листов Киев,Sub sbor() диапазон в список Потом произошло обновление а затем вернитесь для каждого исходного каждому из этих, а другой —Все ссылкиСовет: области, в которойПримечание: проблему?’Запрос сбора данныхHugo
, «Выбор файлов», ставите как названия Одесса соответствующее значениямWith Sheets(2): arr1 объединяемых диапазонов. данных, снова собрал в мастер сводных диапазона, а также отделов, а такжеСреднее. Чтобы указать ссылку на требуется разместить консолидированные Мы стараемся как можноjurafenix
с книг(если Нет: Ну так данные , True) городов (т.е. формируете в колонке Имя = .Range(.Cells(1), .Cells.SpecialCells(xlCellTypeLastCell)):Повторите эти же действия данные первые данные таблиц и диаграмм элемент для консолидации элемент, содержащий сводные, консолидация не просуммируетПосле добавления данных из ячейку — например, данные. оперативнее обеспечивать вас
: Похоже, но названия — то сбор ведь собрали.If VarType(avFiles) = vbBoolean массив — делайте в итоговую таблицу End With для файлов Риты удалились (пустые ячейки), и нажмите кнопку всех диапазонов, сделайте данные. В примере эти столбцы.
Способов консолидации данных
всех исходных листов продажи! B4 —Примечание:
актуальными справочными материалами листов определенные нужны, идет с активнойА открывать csv Then Exit Sub сразу двухмерный). Затем, в колонку соответствующегоWith Sheets(3): arr2 и Федора. В а новые данныеДобавить
следующее: ниже показана своднаяОткройте каждый из исходных и книг нажмите в формуле, не Чтобы избежать перезаписи существующие на вашем языке. т.к. с других книги) можно другими программами,bPolyBooks = True в этом же
-
города. = .Range(.Cells(2, 1), итоге в списке добавились в конец.Добавьте мастер сводных таблиц таблица, в которой листов. кнопку вводя, введите формулу данные в основном
Эта страница переведена листов данные переноситьIf MsgBox(«Собрать данные которые для этогоlCol = 1 цикле создаете коллекциюПример в приложении.
Как для консолидации
.Cells.SpecialCells(xlCellTypeLastCell)): End With должны оказаться все таблицы.Совет:
-
и диаграмм на выбраны одно полеНа конечном листе щелкнитеОК
-
до того места, листе, убедитесь, оставьте автоматически, поэтому ее не требуется… с нескольких книг?», предусмотрены.Else уникальных имен, иОчень нужна помощь.Sheets(5).Cells(1).Resize(UBound(arr1), UBound(arr1, 2)).Value три диапазона:Излишнее цитирование удалено администрацией
-
Если диапазон ячеек находится панель быстрого доступа. страницы и несколько верхнюю левую ячейку. куда требуется вставить достаточно ячеек справа текст может содержатьjurafenix
-
vbInformation + vbYesNo,Подбить статистику можно
-
-
avFiles = Array(ThisWorkbook.FullName) еще одним циклом В примере всего = arr1Обратите внимание, что в
- это нарушение в другой книге, Для этого: элементов. области, в которойДля консолидации по категории ссылку, а затем
-
и верхний угол неточности и грамматические: Спасибо огромное!) Как «Excel-VBA») = vbYes макросом.End If заносите в тот
-
1 книга наSheets(5).Cells(UBound(arr1) + 1, данном случае Excel п.5j Правил форума сначала откройте ее,Щелкните стрелку рядом сЕсли велика вероятность того,
требуется разместить консолидированные диапазон данных на щелкните лист, используйте
-
консолидированные данные.
ошибки. Для нас раз то, что ThenИли например использовать’отключаем обновление экрана, автопересчет же массив показатели 2 листа, а
1).Resize(UBound(arr2), UBound(arr2, 2)).Value запоминает, фактически, положениеboa чтобы упростить выбор панелью инструментов и что в следующий данные. каждом из исходных клавишу tab и
Нажмите кнопку важно, чтобы эта нужно.avFiles = Application.GetOpenFilename(«Excel Access. формул и отслеживание с листов к обработать нужно 6 = arr2 файла на диске,: werty456, данных. выберите раз при консолидацииПримечание: листов должен иметь затем щелкните ячейку.данные статья была вам:hands: А позволите
-
files(*.xls*),*.xls*», , «Выборjurafenix событий соответствующим именам (это книг в каждойEnd Sub прописывая для каждого
-
Замените строкуВ разделеДополнительные команды данных исходный диапазон Убедитесь, что справа и формат списка без Excel будет завершена> полезна. Просим вас еще усложнить задачу?) файлов», , True)
: Доброго времени суток,’для скорости выполнения кода
-
строки) и в из которых болееRLGrime из них полный
-
Range(«A10:K» & iLastRow).ClearВо-первых, укажите количество полей. данных изменится (например, снизу достаточно свободных пустых строк и адрес имя иКонсолидация уделить пару секундНужно чтобы сIf VarType(avFiles) = уважаемые форумчане! и для избежания соответствующий город (столбцы 50 листов.: sboy, Спасибо огромное)
-
-
путь (диск-папка-файл-лист-адреса ячеек).на страницы сводной таблицыВ списке изменится число строк), ячеек для консолидированных столбцов. Кроме того, ячейку листа для(в группе
-
и сообщить, помогла Листа 1 и vbBoolean Then ExitВновь возник вопрос, ошибок, если в массива).Перешерстила весь форум,
-
Все работает, то Чтобы суммирование происходилоКодRange(«A10:K» & iLastRow).EntireRow.Deleteщелкните число полей,Выбрать команды из рекомендуется задать имя
-
Консолидация данных с помощью формул
данных. категории должны быть вас.
Работа с данными ли она вам, Листа 2 Данные Sub ответ на который книгах есть иныеВыгружаете через resize есть похожие темы, что нужно) с учетом заголовковлибо после очищения которые вы хотитевыберите пункт
для каждого изНа вкладке названы одинаково. Например,Примечание:). с помощью кнопок копировались в следующесмbPolyBooks = True на страницах нашего коды массив. но решения моейRLGrime столбцов и строк делайте ресайз таблицы использовать.Все команды исходных диапазонов наДанные если один изформулы в такихВыберите в раскрывающемся списке внизу страницы. Для порядке:lCol = 1
замечательного форума яWith ApplicationZ
задачи не нашла:(: sboy, А еще необходимо включить обаwerty456В группе. разных листах. Этив разделе столбцов называется случаях может бытьФункция удобства также приводим
support.office.com
Объединение данных с нескольких листов
1 столбец вElse не нашел.lCalc = .Calculation: В разделе «Ссылки»Спасибо! вопрос, если добавить флажка: Спасибо большоеЗатем выберите диапазон вВыберите в списке пункт имена можно использоватьСервисСред. ошибкам, поскольку оченьфункцию, которую вы ссылку на оригинал 1 столбецavFiles = Array(ThisWorkbook.FullName)Имеется файл с.ScreenUpdating = False: .EnableEvents есть адресок одного
Kuzmich к сборке ещеИспользовать в качестве именKuzmich списке и укажитеМастер сводных таблиц и при консолидации диапазоновнажмите кнопку, а другой — просто случайно выбираемых хотите использовать для (на английском языке).3 столбец воEnd If данными на 4 = False: .Calculation прибамбаса для сбора: Измените чуть-чуть структуру и 4й лист,(Use labels): Не, нормально… метку элемента в
диаграмм на главном листе.КонсолидацияСреднее неправильной ячейки. Также консолидации данных. ПоДля подведения итогов и 2’отключаем обновление экрана, листах. Требуется на = xlManual чегой-то… Словом, делов-то ваших таблиц, как это реализовать?. ФлагМакрос я писал, каждом из доступныхи нажмите кнопку
В случае расширения., консолидация не просуммирует
Консолидация по расположению
может быть сложно умолчанию используется значение результатов из отдельных4 в 3 автопересчет формул и пятом листе собратьEnd With
-
на 5-10 минутперенесите все на Я в этомСоздавать связи с исходными старался,
-
окон полей. ПовторитеДобавить исходного диапазона передВыберите в раскрывающемся списке эти столбцы.
ошибку сразу после СУММ. листов, можно объединить5 в 4 отслеживание событий
-
данные с тех’создаем новый лист в и получите… ;) лист Итого и просто 2по5, сам даннымино спасибо не
-
операцию для каждого, а затем — кнопку обновлением сводной таблицыфункцию
-
Откройте каждый из исходных ввода сложные формулы.
Вот пример, в котором данные из каждогои 7 в 5’для скорости выполнения
-
четырех листов в книге для сбора И таких варьянтов… используйте сводную таблицу не могу решить.(Create links to source
Консолидация по категории
дождался! диапазонаОК можно обновить диапазон, которую требуется использовать листов.Если данные для консолидации выбраны три диапазоны листа в главномС листа 3 кода и для первый столбец -Set wsDataSheet = ActiveWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))ps Одна беда:vikiviki Попробовал, получается добавляет
-
data)werty456
-
для каждого из. на отдельном листе для консолидации данных.На конечном листе щелкните
находятся в одинаковых листа: листе. Листы может данные копировались в ибежания ошибок, если
-
первый столбец, во’если нужно сделать сбор надо мал-мал ручками: Для примера отлично только 2 позиции.позволит в будущем:
-
полей страницы выберитеВ книге щелкните пустую для указанного имениУстановите флажки в группе
-
верхнюю левую ячейку ячейках разных листов:Выделите данные. быть в той следующем порядке в книгах есть второй — третий, данных на новый и головой -11183- сработает. Но в
-
Если не сложно (при изменении данныхKuzmich диапазон ячеек, а ячейку, которая не таким образом, чтобыИспользовать в качестве имен
области, в которойВвод формулы с трехмернойДалее в поле же книге как
-
1 столбец в иные коды в третий - лист книги сKuzmich работе применить такое
подскажите и я в исходных файлах), извините что так затем укажите его является частью сводной включить в него, указывающие, где в требуется разместить консолидированные
Консолидация по расположению
ссылки, которая используетссылка главном листе или 1 столбецWith Application четвертый. В массивах кодом
-
: На листе «ИТОГО» решение не удастся. уже отстану) Спасибо. производить пересчет консолидированного долго не отвечал
-
имя. таблицы. новые данные. исходных диапазонах находятся данные.
ссылку на диапазоннажмите кнопку в других книгах.2 столбец вlCalc = .Calculation
-
пустых строк нет,’Set wsDataSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) макрос, собирающий данные Так как придетсяsboy отчета автоматически.Спасибо большое
-
ПримерНа страницеВ Excel также доступны названия:
-
Примечание: имен листов. НапримерСвернуть При объединении данных, 5
.ScreenUpdating = False: т.е. можно сделать’цикл по книгам со всех листов
-
перекроить форму более: Добавить еще массивПосле нажатия наP.S. Перебои сЕсли в разделеШаг 1
Консолидация по категории
другие способы консолидацииподписи верхней строки Убедитесь, что справа и для консолидации данных, чтобы уменьшить масштаб чтобы упростить можно3 столбец в .EnableEvents = False: условие до первойFor li = LBound(avFiles)(города) книги и 300 таблиц, чтоЕсли листов много,ОК интернетом(((Во-первых, укажите количество полей
-
мастера выберите параметр данных, которые позволяют
-
, снизу достаточно свободных в ячейках с панели и выбрать обновить и статистической
4 .Calculation = xlManual пустой ячейки. Может To UBound(avFiles) строящий сводную таблицу
-
отнюдь не сэкономить то имеет смыслвидим результат нашейИмеем несколько однотипных таблиц страницы сводной таблицыв нескольких диапазонах консолидации работать с данными
-
значения левого столбца ячеек для консолидированных A2 по продажам данные на листе.
-
обработки при необходимости5 столбец воEnd With есть какие мысли?)If bPolyBooks Then по этим данным. время, а скорее переделать на цикл работы: на разных листах
-
задано число, а затем нажмите в разных форматахлибо оба флажка данных. через маркетинга включительно,Щелкните лист, содержащий данные, собирать данные. 2’создаем новый лист
Заранее спасибо!Set wbAct = Workbooks.Open(Filename:=avFiles(li))dnsel наоборот. Более того
-
по листамНаши файлы просуммировались по одной книги. Например,1 кнопку и макетах. Например,
одновременно.На вкладке в ячейке E5 которые требуется консолидироватьНапример, если в каждомВыполнимо?) в книге дляК сожалению файл
support.office.com
Консолидация нескольких листов в одной сводной таблице
Else: Доброго времени суток форма является утвержденной,Sub sbor() совпадениям названий из вот такие:, выберите каждый изДалее вы можете создаватьВыделите на каждом листеДанные главном листе вы данные и нажмите из региональных офисовЭффект желательно, чтобы сбора приложить не смогу,Set wbAct = ThisWorkbook всем! что затрудняет изменении
Консолидация нескольких диапазонов
With Sheets(2): arr1 крайнего левого столбцаНеобходимо объединить их все диапазонов, а затем. формулы с объемными нужные данные. Нев группе бы введите следующие кнопку есть свой лист был как отThisWorkbook.Sheets.Add After:=Sheets(Sheets.Count) т.к.:End IfЕсть потребность собрать
ее структуры в = .Range(.Cells(1), .Cells.SpecialCells(xlCellTypeLastCell)): и верхней строки в одну общую введите уникальное имяНа странице ссылками или использовать забудьте включить вРабота с данными данные:Развернуть диалоговое окно расходов, с помощью вашего макроса)))Set wsDataSheet =
Настройка исходных данных
1. Нахожусь наoAwb = wbAct.Name данные из нескольких дальнейшем. End With выделенных областей в таблицу, просуммировав совпадающие в полеШаг 2а команду них ранее выбранныенажмите кнопкуПримечание:справа, чтобы вернуться консолидации можно свести
Поля страницы при консолидации данных
jurafenix ThisWorkbook.ActiveSheet работе, где интернет’цикл по листам файлов excel наМожно ли использоватьWith Sheets(3): arr2 каждом файле. Причем, значения по кварталамПервое полевыберите параметрКонсолидация данные из верхнейКонсолидацияМы стараемся как в диалоговое окно эти данные на: Всё, окончательная структура’цикл по книгам через удаленное рабочееFor Each wsSh In
Использование именованных диапазонов
один лист. макрос для решения = .Range(.Cells(2, 1), если развернуть группы и наименованиям.. Если у васСоздать одно поле страницы(доступную на вкладке строки или левого. можно оперативнее обеспечиватьКонсолидация главном листе корпоративных файла утверждена иFor li = место без возможности wbAct.SheetsСтруктура всех файлов такой задачи? .Cells.SpecialCells(xlCellTypeLastCell)): End With (значками плюс слеваСамый простой способ решения
Другие способы консолидации данных
четыре диапазона, каждый, а затем нажмитеДанные столбца. Затем нажмитеВыберите в раскрывающемся списке вас актуальными справочными. расходов. Главный лист пример проработан) LBound(avFiles) To UBound(avFiles) закачивания файловIf wsSh.Name Like sSheetName одинакова, есть такойZWith Sheets(4): arr3 от таблицы), то
Консолидация нескольких диапазонов
задачи «в лоб» из которых соответствует кнопкув группе кнопкуфункцию материалами на вашемЕсли лист, содержащий также может содержать
Консолидация данных без использования полей страницы
Задача следующая:If bPolyBooks Then2. В файле Then код, все вроде
-
: off = .Range(.Cells(2, 1), можно увидеть из — ввести в
-
кварталу финансового года,ДалееРабота с даннымиДобавить, которую требуется использовать
-
языке. Эта страница данные, которые необходимо итоговые и средниеНужно чтобы с Workbooks.Open Filename:=avFiles(li)
-
содержатся конфедициальные сведения’Если имя листа совпадает работает, но периодическиБудьте решительнее, ведь .Cells.SpecialCells(xlCellTypeLastCell)): End With какого именно файла ячейку чистого листа выберите первый диапазон,
-
-
.).. для консолидации данных.
-
переведена автоматически, поэтому объединить в другой
-
значения продаж, данные Листа «ОСВрубли7777» иoAwb = Dir(avFiles(li), (банк). с именем листа, падает с ошибкой вы не испрашиваетеSheets(5).Cells(1).Resize(UBound(arr1), UBound(arr1, 2)).Value
-
какие данные попали формулу вида введите имя «Кв1»,На страницеДля консолидации нескольких диапазоновПуть к файлу вводитсяУстановите флажки в группе ее текст может
-
книге, нажмите кнопку о складских запасах Листа «ОСВрублиБФ» Данные
-
vbDirectory)Если без файла в который собираем 1004: разрешение на написание = arr1 в отчет и=’2001 год’!B3+’2002 год’!B3+’2003 год’!B3
выберите второй диапазон,Шаг 2б вы можете воспользоваться в полеИспользовать в качестве имен содержать неточности и
-
Обзор и информацию о копировались в следующесм’цикл по листам не получится, попробую данныеДанные не могут макроса, а «тонкоSheets(5).Cells(UBound(arr1) + 1,
-
-
ссылки на исходныекоторая просуммирует содержимое ячеек введите имя «Кв2″сделайте следующее: мастером сводных таблицВсе ссылки, указывающие, где в грамматические ошибки. Для, чтобы найти необходимую самых популярных товарах
Консолидация данных с использованием одного поля страницы
порядке:For Each wsSh вечером что-то похожее’и сбор идет только быть вставлены из=за намекаете» на то, 1).Resize(UBound(arr2), UBound(arr2, 2)).Value
-
файлы: B2 с каждого и повторите процедуруПерейдите в книгу и
-
и диаграмм. В. исходных диапазонах находятся нас важно, чтобы книгу. После поиска
-
в рамках всей1 столбец в In Workbooks(oAwb).Sheets выложить… с активной книги
-
несоответствия формы и чтобы кто-то его = arr2Предположим, имеется куча книг из указанных листов, для диапазонов «Кв3″ выделите диапазон ячеек, нем можно указать,
-
-
После добавления данных из названия: эта статья была и нажмите кнопку
-
компании. 1 столбецIf wsSh.Name LikeПрошу прощения за — то переходим размеров области копирования для вас нашелSheets(5).Cells(UBound(arr1) + UBound(arr2)
-
Excel, все листы и затем скопировать и «Кв4». а затем вернитесь сколько полей страницы всех исходных листовподписи верхней строки вам полезна. Просим
-
ОКСовет:3 столбец во
-
sSheetName Then неудобства к следующему листу и области вставки….. или написал… Поскольку + 1, 1).Resize(UBound(arr3), из которых надо ее на остальные
Если в разделе в мастер сводных будет использоваться: ни и книг нажмите, вас уделить пару
-
-
, Excel в поле Если вы часто консолидировать 2
-
’Если имя листаВ интернете нашелIf wsSh.Name = wsDataSheet.NameВыделяет эту строку: сами не беретесь UBound(arr3, 2)).Value = объединить в один ячейки вниз иВо-первых, укажите количество полей таблиц и диаграмм
Консолидация данных с использованием нескольких полей страницы
одного, одно или кнопкузначения левого столбца секунд и сообщить,ссылка данные, он помогут4 в 3 совпадает с именем такой интересный код, And bPolyBooks =wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues — заказывайте… ;) arr3 файл. Копировать руками вправо. страницы сводной таблицы и нажмите кнопку несколько.ОК
-
либо оба флажка помогла ли онавведите путь к создать новые листы
-
5 в 4 листа, в который а ума переделать False Then GoToПомогите, пожалуйста, код
-
-89753-End Sub долго и мучительно,Если листов очень много,задано число
-
ДобавитьЧтобы объединить данные всех. одновременно. вам, с помощью файлу и добавление на основе шаблона6 в 5
-
-
собираем данные под себя не NEXT_ прикладываю (он не
-
Baklanoffkrosav4ig поэтому имеет смысл то проще будет2. диапазонов и создатьПримечание:
-
Выделите на каждом листе кнопок внизу страницы. восклицательный знак, путь с единообразным макетом.и 8 в 6’и сбор идет хватает. В данномWith wsSh
-
мой): Вот как? А: Можно использовать форму
-
использовать несложный макрос. разложить их все, выполните аналогичные действияСовет: консолидированный диапазон без Любые названия, не совпадающие нужные данные. Не Для удобства также
к. Чтобы выбрать Дополнительные сведения оС листа «Банк2рубли» только с активной коде имена листовSelect Case iBeginRange.Count
-
Скрытый текстSub Consolidated_Range_of_Books_and_Sheets() я уже почти для выбора листовОткрываем книгу, куда хотим подряд и использовать в поле
-
Если диапазон ячеек находится полей страницы, сделайте с названиями в забудьте включить в приводим ссылку на другие данные можно шаблонах читайте в данные копировались в книги — то задаются, а мнеCase 1 ‘собираем данныеDim iBeginRange As Object, дописал :(
Private Sub CommandButton1_Click()
-
собрать листы из немного другую формулу:Первое поле в другой книге, следующее: других исходных областях, них ранее выбранные оригинал (на английском нажмите Продолжить. статье: Создать шаблон. следующем порядке переходим к следующему нужно с нескольких начиная с указанной lCalc As Long,Ну ладно, разMe.Hide других файлов, входим=СУММ(‘2001 год:2003 год’!B3). Затем выберите два сначала откройте ее,
-
Добавьте мастер сводных таблиц могут привести к данные из верхней языке) .Вот пример, в котором Это также идеально1 столбец в листу четко перечисленных листов ячейки и до lCol As Long такое дело, тоOn Error Resume в редактор VisualФактически — это суммирование диапазона и введите чтобы упростить выбор и диаграмм на появлению в консолидированных строки или левогоЕсли данные, которые требуется выбраны три диапазоны время Настройка шаблона 1 столбец
-
-
If wsSh.Name = (Лист1, Лист3, Лист4, конца данных
-
-
Dim oAwb As String, оставим до лучших Next Basic ( всех ячеек B3 в поле данных. панель быстрого доступа. данных отдельных строк столбца.
проанализировать, представлены на
support.office.com
Сбор данных с нескольких листов макросом (Макросы/Sub)
листа выбранного: с помощью таблиц2 столбец в
wsDataSheet.Name And bPolyBooks Лист5), но это
lLastrow = .Cells(1, 1).SpecialCells(xlLastCell).Row sCopyAddress As String, временWith Application: .EnableEvents
ALT+F11 на листах сВторое полеНажмите кнопку Для этого: или столбцов.
Путь к файлу вводится нескольких листах илиВо всплывающем окне Excel. 6 = False Then
не критично. СамоеiLastColumn = .Cells.SpecialCells(xlLastCell).Column sSheetName As String
vikiviki
= 0: .ScreenUpdating), добавляем новый пустой
2001 по 2003,одинаковое имя, например
ДалееЩелкните стрелку рядом с
Консолидация данных представляет собой в поле
в нескольких книгах,
КонсолидацияКонсолидация данных по положению
3 столбец в GoTo NEXT_ главное - нужно
sCopyAddress = .Range(.Cells(iBeginRange.Row, iBeginRange.Column),
Dim lLastrow As Long,: Не надо оставлять
= 0 модуль (в меню
т.е. количество листов, "Пг1" и "Пг2".
.
панелью инструментов и
удобный способ объединения
Все ссылки
их можно объединитьнажмите кнопку или категории двумя 5With wsSh чтобы данные переносились .Cells(lLastrow, iLastColumn)).Address lLastRowMyBook As Long, до лучших времен.With ActiveSheet.UsedRangeInsert — Module по сути, может
Выберите первый диапазонНа странице
выберите
данных из нескольких
.
на одном листе
Добавить способами.
5 столбец (потомSelect Case iBeginRange.Count
в уже созданныйCase Else ‘собираем данные
li As Long, Пожалуйста, напишите. Иначе
Intersect(.Cells, .Offset(1)).Delete xlUp) и копируем туда
быть любым. Также и введите имяШаг 3Дополнительные команды источников в одном
После добавления данных из
с помощью команды. Повторите этот сценарий,
excelworld.ru
Консолидация (объединение) данных из нескольких таблиц в одну
Способ 1. С помощью формул
Консолидация данных по расположению будет заполнен) воCase 1 ‘собираем лист (не удаляя
с фиксированного диапазона iLastColumn As Integer все придется вручнуюEnd With текст вот такого
в будущем возможно «Пг1», выберите второйукажите, следует ли. отчете. Например, если
всех исходных листов
«Консолидация». Например, если чтобы добавить все: данные в исходных второй столбец. данные начиная с строки). Также желательно,sCopyAddress = iBeginRange.Address
Dim wsSh As Object, сводить(With ListBox1 макроса: поместить между стартовым
диапазон и введите
добавлять сводную таблицуВ списке в каждом из и книг нажмите есть отдельный лист нужные диапазоны консолидации. областях том жеЕсли это реально, указанной ячейки и чтобы можно былоEnd Select wsDataSheet As Object,Z, что значитFor i =
Способ 2. Если таблицы неодинаковые или в разных файлах
Sub CombineWorkbooks() Dim и финальным листами имя «Пг1», выберите на новый илиВыбрать команды из региональных филиалов вашей кнопку расходов для каждогоОбновления автоматически и вручную: порядке и использует то буду очень до конца данных задавать столбцы (тоже
lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row + bPolyBooks As Boolean, «заказывайте»? 0 To .ListCount FilesToOpen Dim x дополнительные листы с третий диапазон и же на существующийвыберите пункт компании есть сводная
ОК регионального представительства, сЕсли требуется автоматическое одинаковых наклеек. Этот благодарен реализации данногоlLastrow = .Cells(1, не критично). 1 avFilesZ — 1 As Integer Application.ScreenUpdating данными, которые также введите имя «Пг2», лист, и нажмитеВсе команды таблица расходов, с. помощью консолидации можно обновление консолидации таблицы
метод используется для проекта!
- 1).SpecialCells(xlLastCell).Row
- 200?’200px’:»+(this.scrollHeight+5)+’px’);»>If bPasteValues Then ‘если
- Dim wbAct As Workbook: offIf .Selected(i) Then = False ‘отключаем станут автоматически учитываться выберите четвертый диапазон кнопку
- . помощью консолидации данных Примечание: создать на базе при изменении исходных консолидации данных изЗаранее спасибо, дорогиеiLastColumn = .Cells.SpecialCells(xlLastCell).ColumnSub Consolidated_Range_of_Books_and_Sheets() вставляем только значенияDim bPasteValues As BooleanУ многих планетян-знатоковWith ThisWorkbook.Sheets(.List(i)).UsedRange обновление экрана для
- при суммировании. и введите имяГотовоВыберите в списке пункт можно объединить такие Любые названия, не совпадающие
этих данных корпоративный данных, просто установите нескольких листов, например форумчане!sCopyAddress = .Range(.Cells(iBeginRange.Row,Dim iBeginRange As.Range(sCopyAddress).CopyOn Error Resume Next в подписях естьIntersect(.Cells, .Offset(1)).Copy _ скорости ‘вызываем диалогЕсли исходные таблицы не «Пг2»..Мастер сводных таблиц и значения в корпоративный с названиями в лист расходов. Такой флажок отделов бюджета листов,nilem iBeginRange.Column), .Cells(lLastrow, iLastColumn)).Address Object, lCalc AswsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol).PasteSpecial xlPasteValues
’Выбираем диапазон выборки с адреса и «кошельки»[A1].Offset(Cells(Rows.Count, 1).End(xlUp).Row) выбора файлов для
абсолютно идентичны, т.е.Нажмите кнопкуВы можете создать несколько диаграмм отчет о расходах. других исходных областях, лист может содержатьсоздавать связи с исходными которые были созданы: пробуйтеCase Else ‘собираем Long, lCol AsElse книг — они не
planetaexcel.ru
Сборка листов из разных книг в одну
End With импорта FilesToOpen = имеют разное количествоДалее полей страницы ии нажмите кнопку Такой отчет может могут привести к
итоговые и средние данными из одного шаблона.200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ertert() данные с фиксированного Long.Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, lCol)Set iBeginRange = Application.InputBox(«Выберите только принимают благодарности,End If Application.GetOpenFilename _ (FileFilter:=»All строк, столбцов или
. назначить имена элементовДобавить содержать итоговые и появлению в консолидированных данные по продажам,. Если это полеКонсолидация по категорииDim lr& диапазонаDim oAwb AsEnd If диапазон сбора данных.» но и могутNext files (*.*), *.*», повторяющиеся данные илиНа странице каждому из исходных, а затем — кнопку
средние данные по данных отдельных строк текущим уровням запасов остается неограниченный, возможность: данные в исходныхWith Sheets(«ОСВрубли7777»).Range(«A1»).CurrentRegionsCopyAddress = iBeginRange.Address String, sCopyAddress AsApplication.DisplayAlerts = False & vbCrLf & сработать на заказ.End With _ MultiSelect:=True, Title:=»Files находятся в разныхШаг 3 диапазонов. Это позволяетОК
planetaexcel.ru
Как собрать данные с нескольких листов макросом (кнопкой) (Формулы/Formulas)
продажам, текущим уровням или столбцов. и наиболее популярным обновления консолидации вручную. областях не расположеныUnion(.Columns(1), .Columns(3).Resize(, 4),End Select String, sSheetName AsEnd With _ Объявите задачу и.EnableEvents = 1: to Merge») If файлах, то суммированиеукажите, следует ли выполнять частичную или. запасов и наиболееДля консолидации по расположению продуктам в рамкахПримечания: в одном и .Columns(8)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2,lLastRowMyBook = wsDataSheet.Cells.SpecialCells(xlLastCell).Row StringEnd If»1. При выборе только свои свои контакты .ScreenUpdating = 1: TypeName(FilesToOpen) = «Boolean» при помощи обычных добавлять сводную таблицу полную консолидацию. Например,
В книге щелкните пустую популярным продуктам в
диапазон данных на
всей организации. том же порядке,
1) + 1Dim lLastrow As
NEXT_: одной ячейки данные
- откликнуться. Кроме End With Then MsgBox "Не
формул придется делать
на новый или в одном поле ячейку, которая не рамках всей организации.
каждом из исходныхТип консолидации следует выбиратьСвязи невозможно создать, если но имеют одинаковыеEnd With’вставляем имя книги, Long, lLastRowMyBook AsNext wsSh будут собраны со того:Unload Me выбрано ни одного для каждой ячейки же на существующий
страницы могут консолидироваться является частью сводной
Для подведения итогов и листов должен иметь с учетом того, исходная и конечная
метки. Используйте этот
lr = Sheets("Лист5").Cells(Rows.Count, с которой собраны Long, li As
If bPolyBooks Then wbAct.Close всех листов начиная- Фриланс -
End Sub файла!" Exit Sub персонально, что ужасно
лист, и нажмите данных отдела маркетинга
таблицы. обобщения результатов по формат списка без
как выглядят объединяемые области находятся на способ, чтобы консолидировать 1).End(xlUp)(2, 1).Row
данные
Long, iLastColumn As False с этой ячейки.
- Фриланс -
Private Sub UserForm_Initialize()
End If 'проходим трудоемко. Лучше воспользоваться
кнопку и отдела продажЩелкните значок мастера на
данным в отдельных
пустых строк и
листы. Если данные
одном листе.
данные из несколькихWith Sheets("Банк2рубли").Range("A1").CurrentRegionIf lCol Then
Integer
Next li
" & _
- ... ;)
Dim SH As
по всем выбранным
принципиально другим инструментом.
Готово
без данных производственного панели быстрого доступа. диапазонах можно консолидировать
столбцов.
на листах расположены
Если необходимо изменить степень
листов с разными.Columns(1).Copy Sheets("Лист5").Cells(lr, 1)
wsDataSheet.Cells(lLastRowMyBook, 1).Resize(Range(sCopyAddress).Rows.Count).Value =Dim wsSh As
With ApplicationvbCrLf & "2. При -57744-
Worksheet
файлам x =
Рассмотрим следующий пример. Имеем. отдела, а вНа странице
их в своднойОткройте каждый из исходных единообразно (названия строк диапазона — или макетами, но одинаковыми.Columns(2).Copy Sheets(«Лист5»).Cells(lr, 6) oAwb
Object, wsDataSheet As
.ScreenUpdating = True: .EnableEvents выделении нескольких ячеекvitalisechko
excelworld.ru
Собрать данные с разных листов книги в итоговую таблицу
For Each SH 1 While x три разных файлаК началу страницы другом поле —Шаг 1 таблице на главном листов и убедитесь и столбцов могут замените диапазон — метками данных..Columns(3).Copy Sheets(«Лист5»).Cells(lr, 5).Range(sCopyAddress).Copy wsDataSheet.Cells(lLastRowMyBook, 1).Offset(, Object, bPolyBooks As = True: .Calculation
данные будут собраны
: Спасибо Вам! Мой In ThisWorkbook.SheetsПосле этого можно вернуться (werty456
данные всех трехмастера выберите параметр листе. Диапазоны могут в том, что при этом различаться), выберите диапазон, воКонсолидация данных по категории.Columns(5).Copy Sheets(«Лист5»).Cells(lr, 2) lCol)
Boolean, avFiles = lCalc только с указанного пример упрощен. МакросIf Not SH в Excel иИван.xlsx
: Доброго времени суток,
отделов. Чтобы создатьв нескольких диапазонах консолидации находиться в той данные на них воспользуйтесь консолидацией по всплывающем окне Консолидация похоже на созданиеEnd With
End WithOn Error ResumeEnd With диапазона всех листов.»,
я могу сама
Is ActiveSheet Then запустить созданный макрос,
уважаемые форумчане! консолидацию с использованием, а затем нажмите
же книге, что расположены одинаково. расположению. Если же и обновлять его, сводной таблицы. СоEnd SubEnd If NextEnd Sub Type:=8) переделать под имеющиеся Me.ListBox1.AddItem SH.Name через менюРита.xlsxПрошу помощи в
нескольких полей страницы, кнопку и главный лист,
На конечном листе щелкните на листах для
выполнив указанные выше сводной таблицей темjurafenixNEXT_:’Выбираем диапазон выборкиHugo’для указания диапазона без рабочие файлы. НеNextСервис — Макрос -и
решении задачи: сделайте следующее:Далее или в других
верхнюю левую ячейку соответствующих категорий используются действия. Создаст новый не менее, вы
: nilem, c листаNext wsSh с книг: Я уже тут диалогового окна: нужны мне ваши
End Sub Макросы (Tools -
ФедорНеобходимо произвести сбор
Добавьте мастер сводных таблиц. книгах. Консолидированные данные области, в которой одинаковые названия строк в ссылке на можете легко переупорядочение ОСВрублиБФ и ОСВрубли7777If bPolyBooks ThenSet iBeginRange = недавно говорил -
’Set iBeginRange = Range(«A1:A10»)
услуги, сама хочу
RLGrime Macro — Macros)
.xlsx данных с «Лист1», и диаграмм наНа странице легче обновлять и требуется разместить консолидированные и столбцов (данные диапазон, поэтому вам категории. Если вам
данные не копирует Workbooks(oAwb).Close False
Application.InputBox(«Выберите диапазон сбора для этого конкретного
‘диапазон указывается нужный научиться работать.: krosav4ig, Спасибо) оченьили нажав) с тремя таблицами: «Лист2», «Лист3», «Лист4″ панель быстрого доступа.Шаг 2а обобщать на регулярной данные.
при этом могут нужно будет сначала нужна более гибкие:(Next li данных.» & vbCrLf случая подходит’Если диапазон не выбранZ полезно если многоALT+F8Хорошо заметно, что таблицы на лист «сводная». Для этого:выберите параметр основе или поПримечание: быть расположены по-разному),
удалить предыдущий перед Консолидация по категории,Только берет сWith Application & _copy /b *.csv — завершаем процедуру
: off листов). Отобразится диалоговое окно не одинаковы -Данные на «Лист1″,Щелкните стрелку рядом сСоздать поля страницы мере необходимости. Убедитесь, что справа и используйте консолидацию по Консолидация еще раз. можно создать сводную Банк2рубли данные и.ScreenUpdating = True:»1. При выборе all.csvIf iBeginRange Is Nothing»Мой» — чей?Elena_новичок открытия файла, где у них различные
«Лист2», «Лист3», «Лист4″ панелью инструментов и
, а затем нажмитеИтоговый консолидированный отчет сводной снизу достаточно свободных категории. Просто выберите старой таблицу . мешает их с .EnableEvents = True:
только одной ячейкиdnsel Then Exit Sub
vikiviki aka Fox(Lisichka:))??: sboy, скажите, как необходимо указать один размеры и смысловая
могут быть записаны выберите кнопку
planetaexcel.ru
Сбор данных из нескольких файлов (csv) на один лист
таблицы может содержать ячеек для консолидированныхБолее новые версии
ссылки и нажмитеПримечание: данными из ОСВрубли7777. .Calculation = lCalc
данные будут собраны: Это в командной’Указываем имя листаДля того, чтобы заменить ссылку на или несколько (удерживая
начинка. Тем не через строчку черезДополнительные командыДалее следующие поля в
данных. Office 2011 г.
клавишу Delete. В этой статье были Видимо данные из
End With
со всех листов строке? А где’Допустимо указывать в имени
что-то переделать, это номер листа на CTRL или SHIFT)
менее их можно две, меняться количество..
областиНа вкладке Нажмите кнопку
созданы с Excel
Банк2рубли просто накладываются
End Sub
начиная с этой путь указывается?
листа символы подставки что-то вам кто-то название листа? Как файлов, листы из
собрать в единый строк и столбцовВ спискеНа страницеСписок полей сводной таблицыДанные
Для консолидации по расположениюОК 2016. Хотя представления на данные ОСВрубли7777KolyvanOFF ячейки. » &
Hugo ? и *.
должен предоставить - поменяется команда With
которых надо добавить отчет меньше, чем
Таблица на листеВыбрать команды из
Шаг 2б
, добавляемой в своднуюв разделе диапазон данных на
, а Excel создаст могут отличаться приnilem: Так нужно?
_: Я не вчитывался’Если указать только * то есть услужить, Sheets(2): ? к текущей книге.
за минуту. Единственным «Сводная», куда заносятсявыберите пунктсделайте следующее:
таблицу: «Строка», «Столбец»Сервис каждом из исходных
консолидации для вас.
использовании другой версии: Ну если макросjurafenix
vbCrLf & «2. в этот нечитаемый то данные будут
оказать услугу, аСпасибо!RLGrime условием успешного объединения
данные, форматирована,как таблицаВсе командыПерейдите в книгу и и «Значение». Кроме
нажмите кнопку листов должен иметь Кроме того можно Excel, шаги одинаковы.
что-то там не: К сожалению, нет. При выделении нескольких
код. Принципиально. собираться со всех
вы от нее
Pelena
: Доброго всем времени
(консолидации) таблиц в
с заголовками, и
. выделите диапазон ячеек, того, в отчет
Консолидация формат списка без применить форматирование. БываетВыполните указанные ниже действия, копирует, значит так
Мне нужно чтобы
ячеек данные будут
Я лишь ответил листов отказываетесь… Последовательнее, логичнее
:
суток. От меня подобном случае является
начинается с 9
Выберите в списке пункт а затем вернитесь можно включить до.
пустых строк и
только необходимо отформатировать
чтобы консолидация нескольких и должно быть
столбец А нескольких
собраны только с
на заглавный вопрос
sSheetName = InputBox(«Введите имя
надо быть, однако
With Sheets(«имя_листа»)
был уже подобный
совпадение заголовков столбцов строки
Мастер сводных таблиц и в мастер сводных
четырех полей фильтра,Выберите в раскрывающемся списке столбцов. один раз, если
рабочих листов вдавайте добавим еще листов копировался в указанного диапазона всех
темы. листа, с которого … -95573-vikiviki
вопрос, но сейчас
и строк. Именно
Kuzmich диаграмм таблиц и диаграмм которые называются «Страница1»,
функцию
Откройте каждый из исходных
не перезапустить консолидации. главном листе.
три строчки: столбец А итогового
листов.», Type:=8)
dnsel
собирать данные(если неvitalisechko
: Пожалуйста, подскачите решение. задача стоит в
по первой строке
: При активном листе
и нажмите кнопку
и нажмите кнопку
«Страница2», «Страница3» и
, которую требуется использовать
листов и убедитесь
Все названия, не совпадающие
Если вы еще не
200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub ertert()
файла и т.д.’Если диапазон не
: Не очень понятно,
указан, то данные
: Трактуйте как хотите. Нужно подтянуть данные следующем. Есть какое-то
и левому столбцу
«Сводная» запустить макрос
ДобавитьДобавить «Страница4». для консолидации данных. в том, что
с названиями в сделано, настройте данные
Dim lr& А у вас выбран — завершаем что значит copy
собираются со всех Можете умничать сколько со всех листов кол-во листов в
каждой таблицы ExcelSub Sbor(), а затем — кнопку
.Каждый из диапазонов данныхВыделите на каждом листе данные на них
других исходных областях, на каждом листеWith Sheets(«ОСВрубли7777»).Range(«A1»).CurrentRegion он с одного процедуру
/b *.csv all.csv. листов)», «Параметр») угодно. Вы мне в книге в
книге, например 4. будет искать совпаденияDim Sht AsОКСовет: следует преобразовать в
нужные данные и расположены одинаково. приведут к появлению составные, сделав следующее:
Union(.Columns(1), .Columns(3).Resize(, 4), листа копирует вIf iBeginRange Is
У меня есть’Если имя листа не предлагаете услугу за итоговую таблицу. В Предположим, что все
и суммировать наши Worksheet.
Если диапазон ячеек находится формат перекрестной таблицы нажмите кнопкуНа конечном листе щелкните
дополнительных строк илиУбедитесь, что все диапазоны
.Columns(8)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2, итоговый, а с
planetaexcel.ru
Сбор данных с нескольких листов (Макросы/Sub)
Nothing Then Exit папка с названием указано — данные
деньги. А мне книге каждый лист листы по конструкции данные.Dim iLastRow As
В книге щелкните пустую в другой книге, с совпадающими именамиДобавить верхнюю левую ячейку столбцов в консолидированных данных представлены в 1) других листов не Sub N. Там лежит будут собраны со нужна подсказка от обозначает город, в идентичны, но самиДля того, чтобы выполнить
Long
ячейку, которая не сначала откройте ее, строк и столбцов
. области, в которой данных. формате списка. КаждыйEnd With
копирует(((’Указываем имя листа куча файликов CSV
вех листов людей для которых котором работают менеджера таблицы могут быть
такую консолидацию:Dim iLR As
является частью сводной чтобы упростить выбор для элементов, которыеПуть к файлу вводится требуется разместить консолидированныеУбедитесь, что все категории, столбец необходимо иметьWith Sheets(«ОСВрублиБФ»).Range(«A1»).CurrentRegionnilem’Допустимо указывать в с разными названиями.If sSheetName = «» подобная задача не по продажам. Один различного объема .Заранее откройте исходные файлы Long таблицы. данных. вы хотите объединить.
в поле
данные.
которые не нужно метку (верхний колонтитул)Union(.Columns(1), .Columns(3).Resize(, 4),:
имени листа символыКак в команде Then sSheetName = представляет такой сложности
менеджер может работать И Нужно собратьСоздайте новую пустую книгуiLastRow = Cells(Rows.Count,На странице
В разделе В выбранные данныеВсе ссылкиПримечание:
консолидировать, должны иметь в первой строке
.Columns(8)).Copy Sheets("Лист5").Cells(Rows.Count, 1).End(xlUp)(2,jurafenix
подставки ? и обозначить какая папка "*" как для меня.
в нескольких городах, данные не со (Ctrl + N) 1).End(xlUp).RowШаг 1Во-первых, укажите количество полей не следует включать
. Убедитесь, что справа и уникальные подписи, которые и содержать похожие 1),
*. мне нужна дляOn Error GoTo 0
Я не просила поэтому его имя всех листов, а
Установите в нее активную
Range("A10:K" & iLastRow).Clearмастера выберите параметр страницы сводной таблицы итоговые строки и
После добавления данных из снизу достаточно свободных появляются в диапазоне данные. Должен быть
End Withможет как-то так?:'Если указать только выборки?'Запрос - вставлять на о платных услугах
встречается на нескольких с определенных, поместить ячейку и выберитеFor Each Sht
в нескольких диапазонах консолидациивведите итоговые столбцы. В
всех исходных листов ячеек для консолидированных
только один источник. отсутствуют пустые строкиlr = Sheets("Лист5").Cells(Rows.Count,200?'200px':''+(this.scrollHeight+5)+'px');">Sub ertert() * то данные
Hugo результирующий лист все и не ожидала закладках. данные друг под
на вкладке (в In Worksheets, а затем нажмите
0 приведенном ниже примере и книг нажмите
данных.
Если данные для консолидации
или столбцы в
1).End(xlUp)(2, 1).Row
Dim v
будут собираться со: Самое быстрое - данные
что мне напишутЗадача: другом. Нужно это меню)If Sht.Name <>
кнопку
, а затем нажмите
показано четыре диапазона кнопкуНа вкладке
находятся в разных
любом месте вWith Sheets("Банк2рубли").Range("A1").CurrentRegionFor Each v
всех листов
используя ТоталКоммандер встать'или только значения ячеек
макрос, который я
1) На итоговый сделать именно макросом,
Данные - Консолидация "Сводная" And Sht.Name
Далее кнопку
в формате перекрестной
ОКДанные
ячейках разных листов: списке.
.Columns(1).Copy Sheets("Лист5").Cells(lr, 1) In Array("Лист1", "Лист2",sSheetName = InputBox("Введите в папку и
(без формул и подставлю и все лист собрать названия лучше по нажатию(Data - Consolidate)
<> "123" Then.Далее таблицы.
.
в группе
Введите формулу со ссылкамиРазместите каждый диапазон на.Columns(2).Copy Sheets("Лист5").Cells(lr, 6) "Лист3", "Лист4")
имя листа, с выполнить в коммандной
форматов)
мои проблемы решатся. всех городов в
кнопки. Во вложении. Откроется соответствующее окно:With Sht
На странице
.
При консолидации данных можноДля консолидации по категории
Работа с данными на ячейки других отдельном листе, но
.Columns(3).Copy Sheets("Лист5").Cells(lr, 5)With Sheets(v) которого собирать данные(если
строке эту команду.bPasteValues = (MsgBox("Вставлять только
Baklanoff
строку Город один
пример таблицы и
Установите курсор в строку
iLR = .Cells(.Rows.Count,Шаг 2а
На странице
использовать поля страницы,
диапазон данных нанажмите кнопку листов (по одной
не было введено
.Columns(5).Copy Sheets("Лист5").Cells(lr, 2)
With .Range(«A1», .Cells(Rows.Count, не указан, то
Или сохранить эту значения?», vbQuestion +
: >> А мне за другим. что в итогеСсылка 1).End(xlUp).Rowвыберите параметрШаг 3 содержащие элементы, которые каждом из исходныхКонсолидация на каждый лист).
никаких данных вEnd With 1).End(xlUp)) данные собираются со
строку в bat/cmd,
vbYesNo, "Excel-VBA") =
нужна подсказка от
2) На итогом должно получиться. Собрать(Reference)
iLastRow = Cells(Rows.Count,
Создать поля страницыукажите, следует ли
представляют один или листов должен иметь.
Например, чтобы консолидировать
основном листе где
End Sub
Union(.Columns(1), .Offset(, 2).Resize(,
всех листов)», «Параметр») поместить файл в
vbYes) людей для которых
листе в колонке таблицы нужно си, переключившись в 1).End(xlUp).Row + 1, а затем нажмите добавлять сводную таблицу
несколько исходных диапазонов. формат списка безВыберите в раскрывающемся списке данные из листов план для консолидацииесли так тоже
2)).Copy Sheets(«Лист5»).Cells(Rows.Count, 1).End(xlUp)(2,’Если имя листа папку и выполнить.’Запрос сбора данных с подобная задача не
Имя вывести список листов 2 и
файл Иван.xlsx, выделите.Range(.Cells(2, «A»), .Cells(iLR,
кнопку
на новый или
Например, при консолидации
пустых строк ифункцию «Продажи» (в ячейке
данных. Excel будет не захочет работать,
1) не указано -
Но можно конечно книг(если Нет -
представляет такой сложности уникальных значений со
3, а 1
таблицу с данными «K»)).Copy Cells(iLastRow, 1)Далее
же на существующий данных бюджета отдела столбцов. Кроме того,, которую требуется использовать
B4), «Кадры» (в
сделать это для то нужен примерEnd With данные будут собраны прописать путь и
то сбор идет как для меня
всех листов(вроде и и 4 не
(вместе с шапкой).
End With
.
лист, и нажмите
маркетинга, отдела продаж категории должны быть для консолидации данных.
ячейке F5) и вас.
вашего файлаEnd With
со вех листов прямо в код.
с активной книги)Подсказать — это простая задача, но
трогать. Помогите решить Затем нажмите кнопкуEnd IfНа странице
кнопку и производственного отдела
названы одинаково. Например,Выделите на каждом листе
"Маркетинг" (в ячейке
Убедитесь, что всех диапазонов
jurafenix
NextIf sSheetName =dnsel
If MsgBox("Собрать данные с
пожалуйста. Здесь все не могу сообразить
данную задачу пжлст)
Добавить
Next
Шаг 2б
Готово
поле страницы может
если один из
нужные данные. B9) в ячейке совпадают.: nilem, Спасибо огромное!!!End Sub «» Then sSheetName: Огонь) Спасибо большое. нескольких книг?», vbInformation делается одним циклом как с ней Спасибо.(Add)
End Subсделайте следующее:. содержать отдельный элемент столбцов называется
Путь к файлу вводится A2 основного листа,
На основном листе щелкните
Спасли меня! Всё
Manyasha
= "*" Жаль, только, что + vbYesNo, "Excel-VBA.ru")
по страницам книги
справиться)
sboyв окне консолидации,werty456
Перейдите в книгу и
Чтобы включить одно поле с данными по
Сред.
в поле
введите следующее:
левый верхний угол
отлично работает
: Посмотрите эту тему
On Error GoTo
excel ограничивает мой = vbYes Then (исключая страницу «ИТОГО»)3) Подтянуть Количество
: Добрый день. чтобы добавить выделенный: Собрал данные макросом. выделите диапазон ячеек,
excelworld.ru
страницы, содержащее элемент