Содержание
- Объединение данных с нескольких листов
- Консолидация по расположению
- Консолидация по категории
- Консолидация по расположению
- Консолидация по категории
- Как поделить таблицу Excel на две колонки для печати на одном листе.
- Макрос выглядит следующим образом:
- Как поделить таблицу Excel на две колонки для печати на одном листе.: 2 комментария
- Добавить комментарий Отменить ответ
Объединение данных с нескольких листов
Если данные, которые требуется проанализировать, представлены на нескольких листах или в нескольких книгах, их можно объединить на одном листе с помощью команды «Консолидация». Например, если есть отдельный лист расходов для каждого регионального представительства, с помощью консолидации можно создать на базе этих данных корпоративный лист расходов. Такой лист может содержать итоговые и средние данные по продажам, текущим уровням запасов и наиболее популярным продуктам в рамках всей организации.
Тип консолидации следует выбирать с учетом того, как выглядят объединяемые листы. Если данные на листах расположены единообразно (названия строк и столбцов могут при этом различаться), воспользуйтесь консолидацией по расположению. Если же на листах для соответствующих категорий используются одинаковые названия строк и столбцов (данные при этом могут быть расположены по-разному), используйте консолидацию по категории.
Консолидация по расположению
Для консолидации по расположению диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов.
Откройте каждый из исходных листов и убедитесь в том, что данные на них расположены одинаково.
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
На вкладке Данные в группе Работа с данными нажмите кнопку Консолидация.
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
Выделите на каждом листе нужные данные.
Путь к файлу вводится в поле Все ссылки.
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Консолидация по категории
Для консолидации по категории диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов. Кроме того, категории должны быть названы одинаково. Например, если один из столбцов называется Сред. , а другой — Среднее, консолидация не просуммирует эти столбцы.
Откройте каждый из исходных листов.
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
На вкладке Данные в группе Работа с данными нажмите кнопку Консолидация.
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
Установите флажки в группе Использовать в качестве имен, указывающие, где в исходных диапазонах находятся названия: подписи верхней строки, значения левого столбца либо оба флажка одновременно.
Выделите на каждом листе нужные данные. Не забудьте включить в них ранее выбранные данные из верхней строки или левого столбца.
Путь к файлу вводится в поле Все ссылки.
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Примечание: Любые названия, не совпадающие с названиями в других исходных областях, могут привести к появлению в консолидированных данных отдельных строк или столбцов.
Консолидация по расположению
Для консолидации по расположению диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов.
Откройте каждый из исходных листов и убедитесь в том, что данные на них расположены одинаково.
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
На вкладке Данные в разделе Сервис нажмите кнопку Консолидация.
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
Выделите на каждом листе нужные данные и нажмите кнопку Добавить.
Путь к файлу вводится в поле Все ссылки.
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Консолидация по категории
Для консолидации по категории диапазон данных на каждом из исходных листов должен иметь формат списка без пустых строк и столбцов. Кроме того, категории должны быть названы одинаково. Например, если один из столбцов называется Сред. , а другой — Среднее, консолидация не просуммирует эти столбцы.
Откройте каждый из исходных листов.
На конечном листе щелкните верхнюю левую ячейку области, в которой требуется разместить консолидированные данные.
Примечание: Убедитесь, что справа и снизу достаточно свободных ячеек для консолидированных данных.
На вкладке Данные в разделе Сервис нажмите кнопку Консолидация.
Выберите в раскрывающемся списке функцию, которую требуется использовать для консолидации данных.
Установите флажки в группе Использовать в качестве имен, указывающие, где в исходных диапазонах находятся названия: подписи верхней строки, значения левого столбца либо оба флажка одновременно.
Выделите на каждом листе нужные данные. Убедитесь, что вы выбрали верхнюю строку или левый столбец, а затем нажмите кнопку Добавить.
Путь к файлу вводится в поле Все ссылки.
После добавления данных из всех исходных листов и книг нажмите кнопку ОК.
Примечание: Любые названия, не совпадающие с названиями в других исходных областях, могут привести к появлению в консолидированных данных отдельных строк или столбцов.
Источник
Как поделить таблицу Excel на две колонки для печати на одном листе.
Приведенный в статье макрос является альтернативой опции «колонки» используемой в настройках «разметки страницы» программы Word .
Рассмотрим для примера таблицу с перечнем товаров хранящихся на складах. В данной таблице существует 4 столбца: номер подпункта, наименование товара, артикулярный номер товара на складе и место хранения (наименование склада).
№ п.п. | Наименование товара | Артикул | Место размещения |
1 | Яблоки | 112 | Склад №1 |
2 | Щетка | 18 445 | Склад №4 |
3 | Шаурма | 65 631 | Склад №3 |
4 | Черничное варенье | 31 754 | Склад №5 |
5 | Черника | 30 544 | Склад №4 |
6 | Чаша | 77 730 | Склад №3 |
7 | Чайный набор | 40 223 | Склад №2 |
8 | Чай | 58 372 | Склад №2 |
9 | Филе бобра | 28 124 | Склад №2 |
10 | Тунец | 52 322 | Склад №2 |
11 | Томаты | 55 952 | Склад №5 |
12 | Тара Пластиковая | 8 766 | Склад №1 |
13 | Сыр | 63 211 | Склад №1 |
14 | Сывородка | 64 421 | Склад №2 |
15 | Суши | 46 273 | Склад №2 |
16 | Сливки | 60 792 | Склад №4 |
17 | Слива | 11 112 | Склад №5 |
18 | свежий карп | 25 705 | Склад №5 |
19 | Сахар | 41 433 | Склад №3 |
20 | Рыбий жир | 26 914 | Склад №1 |
21 | Рыба мороженная | 24 495 | Склад №4 |
22 | Поводок для собаки | 20 865 | Склад №1 |
23 | Поводок для кошки | 19 655 | Склад №5 |
24 | Пакет пластиковый | 13 606 | Склад №5 |
25 | Пакет ПВХ | 14 815 | Склад №1 |
26 | Оладьи замороженные | 35 384 | Склад №3 |
27 | Носки мужские | 74 101 | Склад №5 |
28 | Носки женские | 72 891 | Склад №4 |
29 | Ножницы | 11 186 | Склад №3 |
30 | Мякоть кокоса | 29 334 | Склад №3 |
31 | Монитор 19″ | 36 594 | Склад №4 |
32 | Молоко | 62 002 | Склад №5 |
33 | Мангал | 48 693 | Склад №4 |
34 | Малина весовая | 34 174 | Склад №2 |
35 | Лопата | 66 841 | Склад №4 |
36 | Лом | 68 051 | Склад №5 |
37 | Ложка чайная | 42 643 | Склад №4 |
38 | Лодка надувная | 47 483 | Склад №3 |
39 | Лавровый лист | 37 804 | Склад №5 |
40 | Куртка стеганная | 71 681 | Склад №3 |
41 | Красная краска | 11 123 | Склад №2 |
42 | Кофе | 59 582 | Склад №3 |
43 | Колготки женские | 17 235 | Склад №3 |
44 | Клавиатура | 12 396 | Склад №4 |
45 | Карп филе | 51 112 | Склад №1 |
46 | Кабачки | 57 162 | Склад №1 |
47 | Имбирь | 43 853 | Склад №5 |
48 | Икра черная | 23 285 | Склад №3 |
49 | Икра красная | 22 075 | Склад №2 |
50 | Изюм | 45 063 | Склад №1 |
51 | Земляника | 32 964 | Склад №1 |
52 | Зелень (укроп) | 2 112 | Склад №3 |
53 | Груша | 1 222 | Склад №4 |
54 | Грибы | 53 532 | Склад №3 |
55 | Горошек | 54 742 | Склад №4 |
56 | Гиря | 69 261 | Склад №1 |
57 | Вилки стальные | 9 976 | Склад №2 |
58 | Ветошь | 49 903 | Склад №5 |
59 | Весы | 16 025 | Склад №2 |
60 | Ведро 8л | 75 310 | Склад №1 |
61 | Ведро 10 л | 76 520 | Склад №2 |
62 | Валенки | 70 471 | Склад №2 |
63 | Бумага 400мг/м | 39 013 | Склад №1 |
Несмотря на то, что таблица имеет всего 4 столбца перечень товаров довольно обширный и при отправке на печать занимает не один печатный лист. При проведении ревизии на складе носить с собой кипу бумаги неудобно.
Чтобы сэкономить немного бумаги, тонера и электроэнергии затраченной на печать сама собой возникает идея распечатать таблицу в две колонки на каждом листе, но реализовать данную идею не так уж просто.
Если в программе Word есть функция во вкладке «Разметка страницы» называемая «Колонки», которая позволяет делить текст на несколько колонок, то в Excel такой опции найти не удается.
Поэтому, чтобы разделить данные из таблицы на две колонки, необходимо записать макрос, который будет выполнять указанные действия.
Макрос выглядит следующим образом:
Sub DveKolonki()
Dim sheetActive As Worksheet, sheetNoviy As Worksheet ‘добавляем переменные, как листы
Dim Vsego As Long, Perviy As Long ‘добавляем переменные для определения границ таблицы
Set sheetActive = ActiveSheet ‘присваиваем переменной активный лист
Vsego = sheetActive.Cells.Find(What:=»?», LookIn:=xlValues, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False _
, SearchFormat:=False).Row — 1 ‘определяем диапазон
Perviy = Application.WorksheetFunction.RoundUp(Vsego / 2, 0) ‘делим диапазон
Set sheetNoviy = Sheets.Add(, Sheets(Sheets.Count)) ‘определяем новый лист
sheetNoviy.Range(«A1:E1»).Value = sheetActive.Range(«A1:E1»).Value
sheetNoviy.Range(«F1:J1»).Value = sheetActive.Range(«A1:E1»).Value
sheetNoviy.Range(«A2»).Resize(Perviy, 5).Value = sheetActive.Range(«A2»).Resize(Perviy, 5).Value
sheetNoviy.Range(«F2»).Resize(Vsego — Perviy, 5).Value = _
sheetActive.Range(«A» & Perviy + 2).Resize(Vsego — Perviy, 5).Value ‘делим таблицу
End Sub
Необходимо в панели разработчика открыть просмотр кода и добавить код макроса в книгу Excel.
Запускать макрос можно из перечня макросов (книги макросов) или присвоить его активному элементу, например, кнопке или чекбоксу.
Подробнее о присвоение макроса кнопке далее по ссылке.
Как поделить таблицу Excel на две колонки для печати на одном листе.: 2 комментария
отчет на 80 листов
на первом листе будет столбец с первого листа (начало) и столбец с сорокового листа …. кому это может понадобиться ….
правильно это если по порядку на первом листе не 40 строк в один столбец (например) а первые 80 строк в два столбца, на втором листе продолжение.
это уже можно назвать «как колонки в ворде»
Добрый день, Алексей. Вы правы для больших таблиц предложенный вариант распечатки подойдет не всем, поэтому на сайте не выложен готовый файл с макросом, а опубликован код VBA (макрос), который каждый пользователь сможет скорректировать — «подправить» для своих целей и своей конкретной таблицы.
Спасибо, что написали комментарий и указали на возможные трудности в работе с макросом.
Добавить комментарий Отменить ответ
Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.
Источник
st.alexer Пользователь Сообщений: 3 |
Доброго всем дня! Весь гугл перерыл, ответа не нашел. Сам макросы изучаю второй день только Изменено: st.alexer — 27.04.2020 15:05:18 |
st.alexer Пользователь Сообщений: 3 |
#2 27.04.2020 07:48:04 Включил «запись макроса», вставил столбец, обозвал его в шапке. А вот как этот код превратить, что бы он на всех листах сделал это действие — не понимаю((
Изменено: st.alexer — 27.04.2020 07:48:39 |
||
vikttur Пользователь Сообщений: 47199 |
#3 27.04.2020 12:40:13
|
||
st.alexer Пользователь Сообщений: 3 |
|
0mega Пользователь Сообщений: 170 |
#5 06.08.2020 08:40:45
если все листы однотипные тогда можно обойтись и без макроса |
||
Михаил Лебедев Пользователь Сообщений: 2855 |
#6 06.08.2020 09:14:57
Да, и это — самое ВАЖНОЕ!!! Иначе «жди беды» Всё сложное — не нужно. Всё нужное — просто /М. Т. Калашников/ |
||
Один столбец из 7 000 строк разбить на несколько |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
||||||||
Ответить |
Skip to content
В статье рассматриваются различные способы объединения листов в Excel в зависимости от того, какой результат вы хотите получить:
- объединить все данные с выбранных листов,
- объединить несколько листов с различным порядком столбцов,
- объединить определённые столбцы с нескольких листов,
- объединить две таблицы Excel в одну по ключевым столбцам.
Сегодня мы займемся проблемой, с которой ежедневно сталкиваются многие пользователи Excel, — как объединить листы Excel в один без использования операций копирования и вставки. Рассмотрим два наиболее распространенных сценария: объединение числовых данных (сумма, количество, среднее и т. д.) и объединение листов ( то есть копирование данных из нескольких листов в один).
Вот что мы рассмотрим в этой статье:
- Объединение при помощи стандартного инструмента консолидации.
- Как копировать несколько листов Excel в один.
- Как объединить листы с различным порядком столбцов.
- Объединение только определённых столбцов из нескольких листов
- Слияние листов в Excel с использованием VBA
- Как объединить два листа в один по ключевым столбцам
Консолидация данных из нескольких листов на одном.
Самый быстрый способ консолидировать данные в Excel (в одной или нескольких книгах) — использовать встроенную функцию Excel Консолидация.
Рассмотрим следующий пример. Предположим, у вас есть несколько отчетов из региональных офисов вашей компании, и вы хотите объединить эти цифры в основной рабочий лист, чтобы у вас был один сводный отчет с итогами продаж по всем товарам.
Как вы видите на скриншоте ниже, четыре объединяемых листа имеют схожую структуру данных, но разное количество строк и столбцов:
Чтобы объединить всю эту информацию на одном листе, выполните следующие действия:
- Правильно расположите исходные данные. Чтобы функция консолидации Excel работала правильно, убедитесь, что:
- Каждый диапазон (набор данных), который вы хотите объединить, находится на отдельном листе. Не помещайте данные на лист, куда вы планируете выводить консолидированные данные.
- Каждый лист имеет одинаковый макет, и каждый столбец имеет заголовок и содержит похожие данные.
- Ни в одном списке нет пустых строк или столбцов.
- Запустите инструмент «Консолидация». На новом листе, где вы планируете поместить результаты, щелкните верхнюю левую ячейку, начиная с которой должны отображаться консолидированные данные, затем на ленте перейдите на вкладку «Данные» и нажмите кнопку «Консолидация».
Совет. Желательно объединить данные в пустой лист. Если на вашем основном листе уже есть данные, убедитесь, что имеется достаточно места (пустые строки и столбцы) для записи результатов.
- Настройте параметры консолидации. Появляется диалоговое окно «Консолидация», и вы делаете следующее:
- В поле «Функция» выберите одну из функций, которую вы хотите использовать для консолидации данных (количество, среднее, максимальное, минимальное и т. д.). В этом примере мы выбираем Сумма.
- В справочном окне, нажав в поле Ссылка на значок , выберите диапазон на первом листе. Затем нажмите кнопку «Добавить», чтобы присоединить его к списку диапазонов. Повторите этот шаг для всех листов, которые вы хотите объединить.
Если один или несколько листов находятся в другой книге, используйте кнопку «Обзор», чтобы найти эту книгу и использовать ее.
- Настройте параметры обновления. В том же диалоговом окне Консолидация выберите любой из следующих параметров:
- Установите флажки «Подписи верхней строки» и / или «Значения левого столбца» в разделе «Использовать в качестве имён», если вы хотите, чтобы заголовки строк и / или столбцов исходных диапазонов были также скопированы.
- Установите флажок «Создать связи с исходными данными», если нужно, чтобы консолидированные данные обновлялись автоматически при изменении исходных таблиц. В этом случае Excel создаст ссылки на ваши исходные листы, а также схему, как на следующем скриншоте:
Если вы развернете какую-либо группу (щелкнув значок плюса), а затем установите курсор на ячейку с определенным значением, в строке формул отобразится ссылка на исходные данные.
Если флажок не устанавливать, то вы получаете просто таблицу с итоговыми цифрами без всяких формул и ссылок:
Как видите, функция консолидации Excel очень полезна для сбора данных. Однако у нее есть несколько ограничений. В частности, он работает только для числовых значений и всегда обрабатывает эти числа тем или иным образом (сумма, количество, среднее и т. д.). Исходные цифры вы здесь не увидите.
Если вы хотите объединить листы в Excel, просто скопировав и объединив их содержимое, вариант консолидации не подходит. Чтобы объединить всего парочку из них, создав как бы единый массив данных, то вам из стандартных возможностей Excel не подойдёт ничего, кроме старого доброго копирования / вставки.
Но если вам предстоит таким образом обработать десятки листов, ошибки при этом будут практически неизбежны. Да и затраты времени весьма значительны.
Поэтому для подобных задач рекомендую использовать один из перечисленных далее нестандартных методов для автоматизации слияния.
Как скопировать несколько листов Excel в один.
Как мы уже убедились, встроенная функция консолидации умеет суммировать данные из разных листов, но не может объединять их путем копирования данных на какой-то итоговый лист. Для этого вы можете использовать один из инструментов слияния и комбинирования, включенных в надстройку Ultimate Suite для Excel.
Для начала давайте будем исходить из следующих условий:
- Структура таблиц и порядок столбцов на всех листах одинаковы.
- Количество строк везде разное.
- Листы могут в будущем добавляться или удаляться.
Итак, у вас есть несколько таблиц, содержащих информацию о различных товарах, и теперь вам нужно объединить эти таблицы в одну итоговую, например так, как на рисунке ниже:
Три простых шага — это все, что нужно, чтобы объединить выбранные листы в один.
1. Запустите мастер копирования листов.
На ленте перейдите на вкладку AblebitsData, нажмите «Копировать листы (Copy Sheets)» и выберите один из следующих вариантов:
- Скопировать листы из каждой книги на один лист и поместить полученные листы в одну книгу.
- Объединить листы с одинаковыми названиями в один.
- Скопировать выбранные в одну книгу.
- Объединить данные из выбранных листов на один лист.
Поскольку мы хотим объединить несколько листов путем копирования их данных, то выбираем последний вариант:
1. Выберите листы и, при необходимости, диапазоны для объединения.
Мастер копирования листов отображает список всех имеющихся листов во всех открытых книгах. Выберите те из них, которые хотите объединить, и нажмите « Далее».
Если вы не хотите копировать все содержимое определенного рабочего листа, используйте специальный значок, чтобы выбрать нужный диапазон, как показано на скриншоте ниже.
В этом примере мы объединяем первые три листа нашей книги:
Совет. Если рабочие листы, которые вы хотите объединить, находятся в другой книге, которая в данный момент закрыта, нажмите кнопку «Добавить файлы …» , чтобы найти и открыть эту книгу.
2. Выберите, каким образом произвести объединение.
На этом этапе вы должны настроить дополнительные параметры, чтобы ваша информация была объединена именно так, как вы хотите.
Как вставить :
- Вставить все – скопировать все данные (значения и формулы). В большинстве случаев это правильный выбор.
- Вставлять только значения – если вы не хотите, чтобы переносились формулы, выберите этот параметр.
- Создать ссылки на исходные данные – это добавит формулы, связывающие итоговые ячейки с исходными. Выберите этот параметр, если вы хотите, чтобы результат объединения обновлялся автоматически при изменении исходных файлов. Это работает аналогично параметру «Создать ссылки на исходные данные» в стандартном инструменте консолидации в Excel.
Как расположить :
- Разместите скопированные диапазоны один под другим – то есть вертикально.
- Расположить скопированные диапазоны рядом – то есть по горизонтали.
Как скопировать :
- Сохранить форматирование – понятно и очень удобно.
- Разделить скопированные диапазоны пустой строкой – выберите этот вариант, если вы хотите добавить пустую строку между сведениями, скопированными из разных листов. Так вы сможете отделить их друг от друга, если это необходимо.
- Скопировать таблицы вместе с их заголовками. Установите этот флажок, если хотите, чтобы заголовки исходных таблиц были включены в итоговый лист.
На скриншоте ниже показаны настройки по умолчанию, которые нам подходят:
Нажмите кнопку «Копировать (Copy)», и у вас будет содержимое трех разных листов, объединенное в один итоговый, как показано в начале этого примера.
Быть может, вы скажете, что подобную операцию можно произвести путем обычного копирования и вставки. Но если у вас будет десяток или более листов и хотя бы несколько сотен строк на каждом из них, то это будет весьма трудоемкой операцией, которая займет довольно много времени. Да и ошибки вполне вероятны. Использование надстройки сэкономит вам много времени и избавит от проблем.
Как объединить листы Excel с различным порядком столбцов.
Когда вы имеете дело с файлами, созданными разными пользователями, порядок столбцов в них часто отличается. Как же их объединить? Будете ли вы копировать вручную или перемещать столбцы, чтобы упорядочить их в каждой книге? Это совсем не выход.
Используем инструмент объединения листов Combine Sheets.
Запускаем надстройку через меню Ablebits Data – Combine Sheets.
Выбираем и отмечаем галочками те листы, данные с которых мы хотим объединить. Затем программа анализирует их и предлагает нам список найденных столбцов с указанием того, сколько раз столбец с подобным названием был обнаружен.
Вы должны указать те столбцы, данные из которых вы хотели бы объединить. Можете выбрать их все, можете – только самые важные.
Затем определяем, как нужно вставить собранные данные: целиком с формулами или только значения, либо сформировать ссылки на источники, чтобы обеспечить постоянное обновление и актуальность информации в случае внесения изменений в исходные таблицы.
Также можно указать, что необходимо сохранить исходное форматирование, если оно уникально в каждой таблице. Так вам, кстати, будет проще определить, откуда появились сведения в общем массиве, какая таблица является их источником.
И данные будут идеально скомпонованы по заголовкам столбцов:
Мы получили своего рода сводную таблицу с необходимой информацией.
Объединение определенных столбцов из нескольких листов.
А вот, как мне кажется, наиболее часто встречающаяся ситуация:
- у вас действительно большие листы с множеством разных столбцов,
- столбцы расположены на каждом из них по-разному, в произвольном порядке,
- необходимо объединить только самые важные из них в итоговую таблицу.
Запустите мастер объединения листов, как мы это делали в предыдущем примере, укажите нужные, а затем выберите соответствующие столбцы. Да, это так просто!
Все дальнейшие шаги мы уже описывали выше. В результате в итоговую таблицу попадают только данные из выбранных вами столбцов:
Эти примеры продемонстрировали только несколько инструментов слияния данных, но это еще не все! Немного поэкспериментировав, вы увидите, насколько полезны и удобны все функции, включенные в пакет.
Полнофункциональная ознакомительная версия Ultimate Suite доступна для загрузки в по этой ссылке.
Слияние листов в Excel с помощью кода VBA
Если вы опытный пользователь Excel и чувствуете себя комфортно с макросами и VBA, вы можете объединить несколько листов Excel в один, используя какой-нибудь сценарий.
Для этого на вкладке Разработчик (Developer) нажмите кнопку Visual Basic или воспользуйтесь сочетанием клавиш Alt+F11. В открывшемся окне добавьте новый модуль через меню Insert — Module и скопируйте туда текст вот такого макроса:
Sub CopyDataWithHeaders()
Dim sh As Worksheet
Dim DestSh As Worksheet
Dim Last As Long
Dim shLast As Long
Dim CopyRng As Range
Dim StartRow As Long
With Application
.ScreenUpdating = False
.EnableEvents = False
End With
'Delete the sheet "RDBMergeSheet" if it exist
Application.DisplayAlerts = False
On Error Resume Next
ActiveWorkbook.Worksheets("RDBMergeSheet").Delete
On Error GoTo 0
Application.DisplayAlerts = True
'Add a worksheet with the name "RDBMergeSheet"
Set DestSh = ActiveWorkbook.Worksheets.Add
DestSh.Name = "RDBMergeSheet"
'Fill in the start row
StartRow = 2
'loop through all worksheets and copy the data to the DestSh
For Each sh In ActiveWorkbook.Worksheets
If sh.Name <> DestSh.Name Then
'Copy header row, change the range if you use more columns
If WorksheetFunction.CountA(DestSh.UsedRange) = 0 Then
sh.Range("A1:Z1").Copy DestSh.Range("A1")
End If
'Find the last row with data on the DestSh and sh
Last = LastRow(DestSh)
shLast = LastRow(sh)
'If sh is not empty and if the last row >= StartRow copy the CopyRng
If shLast > 0 And shLast >= StartRow Then
'Set the range that you want to copy
Set CopyRng = sh.Range(sh.Rows(StartRow), sh.Rows(shLast))
'Test if there enough rows in the DestSh to copy all the data
If Last + CopyRng.Rows.Count > DestSh.Rows.Count Then
MsgBox "There are not enough rows in the Destsh"
GoTo ExitTheSub
End If
'This example copies values/formats, if you only want to copy the
'values or want to copy everything look below example 1 on this page
CopyRng.Copy
With DestSh.Cells(Last + 1, "A")
.PasteSpecial xlPasteValues
.PasteSpecial xlPasteFormats
Application.CutCopyMode = False
End With
End If
End If
Next
ExitTheSub:
Application.Goto DestSh.Cells(1)
'AutoFit the column width in the DestSh sheet
DestSh.Columns.AutoFit
With Application
.ScreenUpdating = True
.EnableEvents = True
End With
End Sub
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Function LastCol(sh As Worksheet)
On Error Resume Next
LastCol = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
End Function
Имейте в виду, что для правильной работы кода VBA все исходные листы должны иметь одинаковую структуру, одинаковые заголовки столбцов и одинаковый порядок столбцов.
В этой функции выполняется копирование данных со всех листов начиная со строки 2 и до последней строки с данными. Если шапка в ваших таблицах занимает две или более строки, то измените этот код, поставив вместо 2 цифры 3, 4 и т.д.:
'Fill in the start row
StartRow = 2
При запуске функция добавит в вашу книгу рабочий лист с именем RDBMergeSheet и скопирует на него ячейки из каждого листа в книге. Каждый раз, когда вы запускаете макрос, он
сначала удаляет итоговый рабочий лист с именем RDBMergeSheet, если он существует, а затем добавляет новый в книгу. Это гарантирует, что данные всегда будут актуальными после запуска кода. При этом формат объединяемых ячеек также копируется.
Ещё несколько интересных примеров кода VBA для объединения листов вашей рабочей книги вы можете найти по этой ссылке.
Как объединить два листа Excel в один по ключевому столбцу
Если вы ищете быстрый способ сопоставить и объединить данные из двух листов, вы можете либо использовать функцию Excel ВПР, либо воспользоваться мастером объединения таблиц Merge Two Tables.
Последний представляет собой удобный визуальный инструмент, который позволяет сравнивать две таблицы Excel по общему столбцу (столбцам) и извлекать совпадающие данные из справочной таблицы. На скриншоте ниже показан один из возможных результатов.
Более подробно его работа рассмотрена в этой статье.
Мастер объединения двух таблиц также включен в Ultimate Suite for Excel, как и множество других полезных функций.
Вот как вы можете объединить листы в Excel. Я надеюсь, что вы найдете информацию в этом коротком руководстве полезной. Если у вас есть вопросы, не стесняйтесь оставлять их в комментариях.
Предположим, у вас есть рабочий лист с огромными строками данных, и теперь вам нужно разбить данные на несколько рабочих листов на основе Имя и фамилия столбец (см. следующий снимок экрана), а имена вводятся случайным образом. Может быть, вы можете сначала отсортировать их, а затем скопировать и вставить их один за другим в другие новые рабочие листы. Но для повторного копирования и вставки потребуется ваше терпение. Сегодня я расскажу о некоторых быстрых приемах решения этой задачи.
Разделить данные на несколько листов на основе столбца с кодом VBA
Разделить данные на несколько рабочих листов на основе столбца с Kutools for Excel
Разделить данные на несколько листов на основе столбца с кодом VBA
Если вы хотите быстро и автоматически разделить данные на основе значения столбца, следующий код VBA — хороший выбор. Пожалуйста, сделайте так:
1. Удерживайте ALT + F11 , чтобы открыть Microsoft Visual Basic для приложений окно.
2. Нажмите Вставить > Модулии вставьте следующий код в окно модуля.
Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
Dim xWS As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Set xWS = Sheets.Add(after:=Worksheets(Worksheets.Count))
xWS.Name = myarr(i) & ""
Else
xWS.Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
xWS.Paste Destination:=xWS.Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy xWS.Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub
3, Затем нажмите F5 нажмите клавишу для запуска кода, и появится окно подсказки, напоминающее вам о выборе строки заголовка, см. снимок экрана:
4. А затем нажмите OK и во втором поле запроса выберите данные столбца, которые вы хотите разделить на основе, см. снимок экрана:
5, Затем нажмите OK, и все данные на активном листе разбиваются на несколько листов по значению столбца. И разделенные листы названы с именами разделенных ячеек. Смотрите скриншот:
Внимание: Разделенные листы помещаются в конец книги, где находится главный рабочий лист.
Разделить данные на несколько рабочих листов на основе столбца с Kutools for Excel
Как новичку в Excel, этот длинный код VBA несколько сложен для нас, и большинство из нас даже не знает, как изменить код по своему усмотрению. Здесь я представлю вам многофункциональный инструмент —Kutools for Excel, Его Разделить данные Утилита не только может помочь вам разделить данные на несколько листов на основе столбца, но также может разделить данные по количеству строк.
Примечание:Чтобы применить это Разделить данные, во-первых, вы должны скачать Kutools for Excel, а затем быстро и легко примените эту функцию.
После установки Kutools for Excel, пожалуйста, сделайте так:
1. Выберите диапазон данных, которые вы хотите разделить.
2. Нажмите Кутулс Плюс > Рабочий лист > Разделить данные, см. снимок экрана:
3. В Разделить данные на несколько листов диалоговое окно, вам необходимо:
1). Выбрать Конкретный столбец вариант в Сплит на основе раздел и выберите значение столбца, по которому вы хотите разделить данные, в раскрывающемся списке. (Если у ваших данных есть заголовки, и вы хотите вставить их в каждый новый разделенный лист, проверьте У моих данных есть заголовки опция).
2). Затем вы можете указать имена разделенных листов под Имя нового листа раздел, укажите правила имен рабочих листов из Правила раскрывающийся список, вы можете добавить Префикс or Суффикс также для имен листов.
3). Щелкните значок OK кнопка. Смотрите скриншот:
4. Теперь данные разделены на несколько листов в новой книге.
Нажмите, чтобы скачать Kutools for Excel и бесплатная пробная версия прямо сейчас!
Разделить данные на несколько рабочих листов на основе столбца с Kutools for Excel
Kutools for Excel включает более 300 удобных инструментов Excel. Бесплатная пробная версия без ограничений в течение 30 дней. Загрузите бесплатную пробную версию прямо сейчас!
Связанная статья:
Как разбить данные на несколько листов по количеству строк?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!