Разделение таблицы по листам
В Microsoft Excel есть много инструментов для сборки данных из нескольких таблиц (с разных листов или из разных файлов): прямые ссылки, функция ДВССЫЛ (INDIRECT), надстройки Power Query и Power Pivot и т.д. С этой стороны баррикад всё выглядит неплохо.
Но если вы нарвётесь на обратную задачу — разнесения данных из одной таблицы на разные листы — то всё будет гораздо печальнее. На сегодняшний момент цивилизованных встроенных инструментов для такого разделения данных в арсенале Excel, к сожалению, нет. Так что придется задействовать макрос на Visual Basic, либо воспольоваться связкой макрорекордер+Power Query с небольшой «доработкой напильником» после.
Давайте подробно рассмотрим, как это можно реализовать.
Постановка задачи
Имеем в качестве исходных данных вот такую таблицу размером больше 5000 строк по продажам:
Задача: разнести данные из этой таблицы по городам на отдельные листы этой книги. Т.е. на выходе нужно получить на каждом листе только те строки из таблицы, где продажа была в соответствующем городе:
Подготовка
Чтобы не усложнять код макроса и сделать его максимально простым для понимания, выполним пару подготовительных действий.
Во-первых, создадим отдельную таблицу-справочник, где в единственном столбце будут перечислены все города, для которых нужно создать отдельные листы. Само-собой, в этом справочнике могут быть не все города, присутствующие в исходных данных, а только те, по которым нам нужны отчеты. Проще всего создать такую таблицу, используя команду Данные — Удалить дубликаты (Data — Remove duplicates) для копии столбца Город или функцию УНИК (UNIQUE) — если у вас последняя версия Excel 365.
Поскольку новые листы в Excel по умолчанию создаются перед (левее) текущего (предыдущего), то имеет смысл также отсортировать города в этом справочнике по убыванию (от Я до А) — тогда после создания листы-города расположатся по алфавиту.
Во-вторых, преобразуем обе таблицы в динамические («умные»), чтобы с ними было проще работать. Используем команду Главная — Форматировать как таблицу (Home — Format as Table) или сочетание клавиш Ctrl+T. На появившейся вкладке Конструктор (Design) назовём их таблПродажи и таблГорода, соответственно:
Способ 1. Макрос для деления по листам
На вкладке Разработчик (Developer) нажмите на кнопку Visual Basic или используйте сочетание клавиш Alt+F11. В открывшемся окне редактора макросов вставьте новый пустой модуль через меню Insert — Module и скопируйте туда следующий код:
Sub Splitter() For Each cell In Range("таблГорода") Range("таблПродажи").AutoFilter Field:=3, Criteria1:=cell.Value Range("таблПродажи[#All]").SpecialCells(xlCellTypeVisible).Copy Sheets.Add ActiveSheet.Paste ActiveSheet.Name = cell.Value ActiveSheet.UsedRange.Columns.AutoFit Next cell Worksheets("Данные").ShowAllData End Sub
Здесь с помощью цикла For Each … Next реализован проход по ячейкам справочника таблГорода, где для каждого города происходит его фильтрация (метод AutoFilter) в исходной таблице продаж и затем копирование результатов на новый созданный лист. Попутно созданный лист переименовывается в то же имя города и на нем включается автоподбор ширины столбцов для красоты.
Запустить созданный макрос в Excel можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или сочетанием клавиш Alt+F8.
Способ 2. Создаем множественные запросы в Power Query
У предыдущего способа, при всей его компактности и простоте, есть существенный недостаток — созданные макросом листы не обновляются при изменениях в исходной таблице продаж. Если обновление «на лету» необходимо, то придется использовать связку VBA+Power Query, а точнее — создавать с помощью макроса не просто листы со статическими данными, а обновляемые запросы Power Query.
Макрос в этом случае частично похож на предыдущий (в нём тоже есть цикл For Each … Next для перебора городов в справочнике), но внутри цикла будет уже не фильтрация и копирование, а создание запроса Power Query и выгрузка его результатов на новый лист:
Sub Splitter2() For Each cell In Range("таблГорода") ActiveWorkbook.Queries.Add Name:=cell.Value, Formula:= _ "let" & Chr(13) & "" & Chr(10) & " Источник = Excel.CurrentWorkbook(){[Name=""таблПродажи""]}[Content]," & Chr(13) & "" & Chr(10) & " #""Измененный тип"" = Table.TransformColumnTypes(Источник,{{""Категория"", type text}, {""Наименование"", type text}, {""Город"", type text}, {""Менеджер"", type text}, {""Дата сделки"", type datetime}, {""Стоимость"", type number}})," & Chr(13) & "" & Chr(10) & " #""Строки с примененным фильтром"" = Table.Se" & _ "lectRows(#""Измененный тип"", each ([Город] = """ & cell.Value & """))" & Chr(13) & "" & Chr(10) & "in" & Chr(13) & "" & Chr(10) & " #""Строки с примененным фильтром""" ActiveWorkbook.Worksheets.Add With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _ "OLEDB;Provider=Microsoft.Mashup.OleDb.1;Data Source=$Workbook$;Location=" & cell.Value & ";Extended Properties=""""" _ , Destination:=Range("$A$1")).QueryTable .CommandType = xlCmdSql .CommandText = Array("SELECT * FROM [" & cell.Value & "]") .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = cell.Value .Refresh BackgroundQuery:=False End With ActiveSheet.Name = cell.Value Next cell End Sub
После его запуска мы увидим те же листы по городам, но формировать их будут уже созданные запросы Power Query:
При любых изменениях в исходных данных достаточно будет обновить соответствующую таблицу правой кнопкой мыши — команда Обновить (Refresh) или обновить сразу все города оптом, используя кнопку Обновить всё на вкладке Данные (Data — Refresh All).
Ссылки по теме
- Что такое макросы, как их создавать и использовать
- Сохранение листов книги как отдельных файлов
- Сборка данных со всех листов книги в одну таблицу
Именно так называется очередное видео от Николая Павлова, размещенное на его сайте https://www.planetaexcel.ru. Полная ссылка https://www.planetaexcel.ru/techniques/12/18012/
https://www.planetaexcel.ru/techniques/12/18012/
Здесь имеется прекрасный разбор примера продаж по разным городам.
Основная суть. Есть таблица с некоторым ключевым полем. Через меню Умная таблица даем ей имя ТаблПродажи.
Копируем столбец с ключевым полем правее основной таблицы. Задаем ей имя через тот же пункт меню ТаблГорода.
Оставляем в этом столбце лишь уникальные записи. В 2016 Excel это делается также через меню.
Создаем макрос Splitter. Код его представлен. При запуске макроса происходит разноска данных одного листа за счет применения фильтрации и выборки на новые листы, которым присваивается имя обрабатываемого города.
Применённая технология может быть использована на различных данных, где на листе имеются совпадающие ключевые значения в одном или нескольких столбцах. Обычно их называют критерии. Это могут быть Criteria1, Criteria2 и т.д. Т.е. ключевых полей может быть и несколько как и столбцов основной таблицы, где мы и будем искать эти критерии(ключи) на совпадение.
В образовании такими ключами чаще всего выступают номер класса и его литера. Часто эти значения разделены по разным столбцам. Я предпочитал всегда разносить класс и его литеру по разным столбцам.
Во всяком случае я давно использовал этот метод разноски данных с одного листа по разным классам или школам.
Я до сих пор предпочитаю по старинке работать в Excel 2003. Возможности его ограничены по сравнению со старшими версиями. От этого даже становится интересно проверить 2003 версию на примерах 2016 версии. 2016 версия у меня стоит на другом ПК., который использует внучка.
Есть более универсальный метод выборки данных с применением механизма создания диапазона строка RowRange.
Обычно лист с данными для последующей выборки имеет несколько строк шапки сверху. А данные начинаются со строки 4, 5 или 6.
Поэтому вначале мы создаем диапазон, содержащий шапку, а затем к нему через оператор
Set RowRange = Union(RowRange, ActiveSheet.Rows(i)) добавляем найденные строки с нужными нам критериями.
Макрос формирует новый лист с выбранными по ключу данными и возвращает количество найденных записей Sum1.
Sub Wybor_Litera_Klass_List(Sum1)
‘Это ПодПрограмма выбора всех учащихся
‘всех классов
‘Каждый класс выбирается на свой лист
Dim i As Integer, k As Integer
Dim Klass1 As String
Dim Litera1 As String
Dim RowRange As Range
Dim iw As Integer
On Error GoTo Error_Handler
Sum1 = 0
Begin_Stroka = 6 ‘Начало данных с 6 строки
If ActiveSheet.Name <> “Список учащихся” Then
Sheets(“Список учащихся”).Activate
End If
‘Подсчет числа столбцов. Считаем не пустые столбцы
‘Можно воспользоваться и командой CurrentRegion
Columns_Kol = 0
For i = 1 To 256
If Cells(5, i) <> Empty Then Columns_Kol = Columns_Kol + 1
Next
‘Определяем ширину каждого столбца в исходном файле
For i = 1 To Columns_Kol
ActiveSheet.Columns(i).Select
Columns_Width(i) = ActiveSheet.Columns(i).ColumnWidth
Next
‘Ключи сравнения или критерии находятся во 2-ом и 3-ем столбцах
i = 6
Klass = ActiveSheet.Cells(i, 2).Value
Litera = ActiveSheet.Cells(i, 3).Value
Do While Klass <> Empty
k = 1
Klass1 = ActiveSheet.Cells(i, 2).Value
Litera1 = ActiveSheet.Cells(i, 3).Value
Do While Klass = Klass1 And Litera = Litera1
If k = 1 Then ‘Создаем диапазон строк, содержащих шапку в первых 5 строках
Set RowRange = ActiveSheet.Rows(1)
Set RowRange = Union(RowRange, ActiveSheet.Rows(2))
Set RowRange = Union(RowRange, ActiveSheet.Rows(3))
Set RowRange = Union(RowRange, ActiveSheet.Rows(4))
Set RowRange = Union(RowRange, ActiveSheet.Rows(5))
End If
‘Добавляем строки, отвечающин критериям выборки
Set RowRange = Union(RowRange, ActiveSheet.Rows(i))
‘Перенумерация всех учеников
‘ActiveSheet.Cells(i, 1) = k
k = k + 1
i = i + 1
Klass1 = ActiveSheet.Cells(i, 2).Value
Litera1 = ActiveSheet.Cells(i, 3).Value
If Klass1 = Empty Then Exit Do
If Klass1 <> Klass Or Litera1 <> Litera Then
Sum1 = Sum1 + k – 1
k = 1
RowRange.Select
Selection.Copy
Sheets.Add
ActiveSheet.Name = Klass + ” ” + Litera
Range(“A1”).Select
For iw = 1 To Columns_Kol
ActiveSheet.Columns(iw).ColumnWidth = Columns_Width(iw)
Next
ActiveSheet.Paste ‘Вставляем диапазон с шапкой и данными на добавленный ранее лист
Range(“A1”).Select
Sheets(“Список учащихся”).Select
Klass = Klass1
Litera = Litera1
End If
Loop
If Klass1 = Empty Then Exit Do
Loop
RowRange.Select
Selection.Copy
Sheets.Add
ActiveSheet.Name = Klass + ” ” + Litera
Range(“A1”).Select
”Настройка столбцов
For iw = 1 To Columns_Kol
ActiveSheet.Columns(iw).ColumnWidth = Columns_Width(iw)
Next
Sum1 = Sum1 + k – 1
ActiveSheet.Paste
Range(“A1”).Select
Sheets(“Список учащихся”).Select
Range(“A1”).Select
GoTo Exit1
Error_Handler:
MsgBox “Список учеников не отсортирован по классу” + vbCr + _
” Попытка сформировать лист ” + Klass + Litera
Resume Next
Exit1:
End Sub
Программа версия Excel 2003 по реализации предложенного метода Н.Павловым, но с учетом невозможности реализации функций 2016 версии.
Данные представляют из себя сведения об учениках одной из школ с убранными идентифицирующими сведениями: Фамилия, адрес, телефон. Шапка расположена в строках 1-5. Данные располагаются со строки 6. Запуск через auto_open с формой из трех команд.
На самом деле важность представляет лишь последняя команда и связанный с ней вызываемый модуль. Две предыдущие команды просто показывают последовательность реализации выборки учащихся по классам, – удаление всех листов кроме листа Данные, переход к столбцу критерии и собственно самой выборки.
Показ изменения данных на листах книги блокирован до завершения программы, как и вывод системных сообщений. Обработка листов показывается в строке статуса.
Программа Школа_Классы.xls
Skip to content
Разделить таблицу на отдельные листы
Как разделить лист по значениям столбца в Excel
Мастер разделения таблиц для Excel предлагает быстрый способ разделить таблицу по отдельным листам на основе значений в выбранных столбцах. Для каждого ключевого значения будет создана новая таблица. Независимо от того, насколько велико количество ваших данных, разделение их на отдельные части или даже на несколько файлов больше не является проблемой!
-
60-дневная безусловная гарантия возврата денег
-
Бесплатные обновления на 2 года
-
Бесплатная и бессрочная техническая поддержка
С помощью инструмента разделения таблицы вы сможете:
Разделите таблицу по одному или нескольким ключевым столбцам
Ваша электронная таблица Excel может быть разделена на отдельные таблицы в соответствии со значениями в одном или нескольких ключевых столбцах.
Выбрать имена для полученных листов или книг
Назовите новые листы ключевыми значениями или числами и, при желании, добавьте свой собственный текст к выбранным именам.
Сохранить результат в новую или текущую книгу
Сохраните полученные после операции разделения таблицы в текущую книгу или добавьте их в новую книгу Excel, указав ее расположение.
Разделить лист Excel на несколько файлов
Вставьте каждую новую таблицу в отдельную книгу Excel и укажите их место расположения.
Разделение листов за несколько кликов
Удобный и простой в использовании инструмент
Что такое мастер разделения таблиц и для чего он мне нужен?
Мастер разделения таблиц — это надстройка для Microsoft Excel, которая разделяет организованные по столбцам таблицы Excel на несколько листов в соответствии с ключевыми значениями в выбранных столбцах.
Как работает мастер разделения таблицы?
Мастер разделения таблицы предлагает вам пять быстрых шагов для получения результата:
- Выберите исходную таблицу, которую нужно разделить на части.
- Выберите ключевые столбцы.
- Укажите место назначения результатов.
- Выберите, как назвать новые листы или книги.
- Нажмите « Готово» и наслаждайтесь результатом.
Могу ли я создать свои новые таблицы в той же книге, что и основная таблица?
Да, чтобы создать новые таблицы в той же книге, установите флажок Текущая книга на шаге 3.
Мне нужно, чтобы каждая разделенная таблица была записана в отдельной книге. Возможно ли это?
Да, для выполнения этой задачи установите флажок Несколько новых книг на шаге 3. Если вам нужно создать только одну новую книгу и разместить в ней все разделенные таблицы, выберите параметр Новая книга на шаге 3.
А как насчет наименования новых листов?
Новые листы могут быть названы порядковыми номерами или же ключевыми значениями из выбранных столбцов. Кроме этого, вы можете добавить любой текст к этим именам.
Могу ли я сохранить шапку моей основной таблицы в новых таблицах?
Да, для этого выберите опцию Копировать заголовок на шаге 4.
Скачать Ultimate Suite
Рейтинговые
Да благословят вас боги! Вы не просто мне жизнь облегчили за мгновение ока, вы спасли мои нервы, настроение и целый месяц! Бесконечно вам благодарна, о потрясающие создатели невероятного софта
Как автоматически разделить таблицу на несколько листов в Excel и Google
Итак, предположим, у нас есть лист с большим количеством данных и нам необходимо разделить данные на несколько рабочих листов на основе столбца «Категория». Выполнить эту задачу можно вручную, используя инструмент сортировки данных, но в этом случае потребуется Ваше терпение для повторного копирования данных.
Готовые коды для разделения таблиц на листы.
Прежде чем копировать код, посмотрите видеоролик о том, как это работает. Приятного просмотра!
Готовый скрипт разделения Google таблиц на листы:
Готовый код Excel VBA для разделения на листы:
Заключение
Как видите, не нужно тратить большое количество времени на ручное копирование данных. С помощью нашего руководства, это можно сделать всего за несколько минут.
- 14 марта 2021
- 2406
- MS Excel Google Sheets Video Code
Зависимый выпадающий список в Excel и Google таблицах
20 июля 2021 г. 10769 MS Excel Video File Google Sheets
В этой статье мы расскажем, как создавать зависимые выпадающие списки в Excel и Google таблицах. Рассмотрим автоматическое обновление раскрывающегося списка при добавлении новых данных к исходным данным.
Совместная работа в Google таблицах. Функция IMPORTRANGE.
7 апреля 2022 г. 276 Google Sheets Video File
Рассказываем о том, как организовать рабочее пространство в Google таблицах между несколькими сотрудниками на примере трекера задач.
Как в Экселе разделить одну страницу на две?
Удерживая нажатой клавишу SHIFT, выберите столько ярлычков листов книги, сколько листов требуется вставить в открытую книгу. Например, если требуется добавить три новых листа, выберите три ярлычка существующих листов. На вкладке Главная в группе Ячейки щелкните Вставить, а затем выберите Вставить лист.
Как сделать 2 копии на одном листе?
Печать нескольких копий на листе
На вкладке Файл выберите пункт Печать. В разделе Параметры щелкните Одна страница на листе, а затем выберите в списке значение Несколько копий на листе. В поле Число копий каждой страницы введите количество копий, которое вы хотите распечатать.
Как в Excel разделить страницу на 4 части?
Для того, что бы разделить лист Excel на четыре части, перейдите в меню Вид и нажмите кнопку «Разделить». Если Вы хотите получить два окна, то просто перетащите горизонтальную или вертикальную разделяющую линию до края экрана.
Как настроить страницы в Excel?
Разметка страниц для печати в Excel
- Перейти на закладку «Вид» и выбрать инструмент «Размета страницы»
- В нижнем правом углу окна (на строке состояния, справа) щелкнуть на соответствующий переключатель между режимами «Обычный» и «Страничный».
Как в Экселе вытащить лист?
- Щелкните правой кнопкой мыши ярлычок листа.
- Щелкните Переместить или скопировать.
- Щелкните раскрывающееся меню Переместить выбранные листы в книгу. Выберите (новая книга).
- Нажмите кнопку ОК. Откроется новая книга с перемещенным листом. …
- Щелкните Файл > Сохранить в новой книге.
Как разделить таблицу на 2 части?
- Поместите курсор в строку, которая должна стать первой строкой второй таблицы. В представленном примере это третья строка. …
- На вкладке МАКЕТ в группе Объединение выберите команду Разделить таблицу. Таблица будет разделена на две части.
Как разделить таблицу в ворде по вертикали?
2. Вы также можете использовать простую комбинацию клавиш, чтобы разделить таблицу на несколько таблиц, поместите курсор в ячейку, из которой вы хотите разделить, и затем нажмите Ctrl + Shift + Enter вместе, чтобы разделить таблицу на две части.
Как разбить таблицу на листы?
Как разбить таблицу на несколько листов на основе значений столбца
- Нажмите кнопку Разбить таблицу на панели XLTools. …
- Выберите таблицу или диапазон, который вы хотите разбить, включая заголовок. …
- Отметьте флажком Таблица с заголовками, если это так. …
- Выберите разбить по Значениям в этом столбце в качестве метода разделения
Как в Excel разделить текст в одной ячейке на две строки?
Чтобы разбить текст на строки в одной ячейке Excel нужно нажать комбинацию клавиш Alt+Enter.
Как разделить ячейку по диагонали в Эксель?
Разделить ячейку по диагонали в Excel
- Щелкните правой кнопкой мыши указанную ячейку, которую вы разделите по диагонали, и выберите Формат ячеек из контекстного меню. …
- В диалоговом окне «Формат ячеек» нажмите, чтобы включить Граница вкладку, щелкните, чтобы выделить в Граница раздел, а затем щелкните OK кнопка.
Как разделить Слипшийся текст в Excel?
Решение: Выделите нужные ячейки, перейдите в меню Данные → Текст по столбцам. В появившемся окне Мастер текстов (разбора) укажите формат данных: с разделителями – в случае, когда содержимое будущих отдельных столбцов разделяется каким-либо символом (укажите, каким именно).
Разделение таблицы по листам
В Microsoft Excel есть много инструментов для сборки данных из нескольких таблиц (с разных листов или из разных файлов): прямые ссылки, функция ДВССЫЛ (INDIRECT) , надстройки Power Query и Power Pivot и т.д. С этой стороны баррикад всё выглядит неплохо.
Но если вы нарвётесь на обратную задачу — разнесения данных из одной таблицы на разные листы — то всё будет гораздо печальнее. На сегодняшний момент цивилизованных встроенных инструментов для такого разделения данных в арсенале Excel, к сожалению, нет. Так что придется задействовать макрос на Visual Basic, либо воспольоваться связкой макрорекордер+Power Query с небольшой «доработкой напильником» после.
Давайте подробно рассмотрим, как это можно реализовать.
Постановка задачи
Имеем в качестве исходных данных вот такую таблицу размером больше 5000 строк по продажам:
Задача: разнести данные из этой таблицы по городам на отдельные листы этой книги. Т.е. на выходе нужно получить на каждом листе только те строки из таблицы, где продажа была в соответствующем городе:
Подготовка
Чтобы не усложнять код макроса и сделать его максимально простым для понимания, выполним пару подготовительных действий.
Во-первых, создадим отдельную таблицу-справочник, где в единственном столбце будут перечислены все города, для которых нужно создать отдельные листы. Само-собой, в этом справочнике могут быть не все города, присутствующие в исходных данных, а только те, по которым нам нужны отчеты. Проще всего создать такую таблицу, используя команду Данные — Удалить дубликаты (Data — Remove duplicates) для копии столбца Город или функцию УНИК (UNIQUE) — если у вас последняя версия Excel 365.
Поскольку новые листы в Excel по умолчанию создаются перед (левее) текущего (предыдущего), то имеет смысл также отсортировать города в этом справочнике по убыванию (от Я до А) — тогда после создания листы-города расположатся по алфавиту.
Во-вторых, преобразуем обе таблицы в динамические («умные»), чтобы с ними было проще работать. Используем команду Главная — Форматировать как таблицу (Home — Format as Table) или сочетание клавиш Ctrl + T . На появившейся вкладке Конструктор (Design) назовём их таблПродажи и таблГорода, соответственно:
Способ 1. Макрос для деления по листам
На вкладке Разработчик (Developer) нажмите на кнопку Visual Basic или используйте сочетание клавиш Alt + F11 . В открывшемся окне редактора макросов вставьте новый пустой модуль через меню Insert — Module и скопируйте туда следующий код:
Здесь с помощью цикла For Each . Next реализован проход по ячейкам справочника таблГорода, где для каждого города происходит его фильтрация (метод AutoFilter) в исходной таблице продаж и затем копирование результатов на новый созданный лист. Попутно созданный лист переименовывается в то же имя города и на нем включается автоподбор ширины столбцов для красоты.
Запустить созданный макрос в Excel можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или сочетанием клавиш Alt + F8 .
Способ 2. Создаем множественные запросы в Power Query
У предыдущего способа, при всей его компактности и простоте, есть существенный недостаток — созданные макросом листы не обновляются при изменениях в исходной таблице продаж. Если обновление «на лету» необходимо, то придется использовать связку VBA+Power Query, а точнее — создавать с помощью макроса не просто листы со статическими данными, а обновляемые запросы Power Query.
Макрос в этом случае частично похож на предыдущий (в нём тоже есть цикл For Each . Next для перебора городов в справочнике), но внутри цикла будет уже не фильтрация и копирование, а создание запроса Power Query и выгрузка его результатов на новый лист:
После его запуска мы увидим те же листы по городам, но формировать их будут уже созданные запросы Power Query:
При любых изменениях в исходных данных достаточно будет обновить соответствующую таблицу правой кнопкой мыши — команда Обновить (Refresh) или обновить сразу все города оптом, используя кнопку Обновить всё на вкладке Данные (Data — Refresh All) .
Введение
Предположим, у нас есть рабочий лист с большим количеством данных, и нам нужно разделить данные на отдельные книги Excel на основе столбца «Категория». Решить данную проблему возможно ручным способом, применяя инструмент фильтрации данных. Однако повторное копирование данных потребует терпения.
Как быстро разделить таблицу Excel на отдельные книги макросом. Пошаговый алгоритм
- Сочетанием клавиш Alt+F11 открываем окно Visual Basic
- Создаем новый модуль Insert -> Module
- Вставляем код
Sub Разделить_столбец_по_книгам()
Const column = 2 'номер столбца, по которому будет происходить разделение.'
Const head = True
Set wbAct = ActiveWorkbook
Set dic = CreateObject("Scripting.Dictionary")
lr = Cells(Rows.Count, 1).End(xlUp).Row
lc = Cells(1, Columns.Count).End(xlToLeft).column
arr = Range("A1", Cells(lr, lc)).Value
If head Then fr = 2 Else fr = 1
For i = fr To UBound(arr)
If Trim(arr(i, column)) <> "" Then dic.Item(arr(i, column)) = dic.Item(arr(i, column)) & "|" & i
Next
iPath = wbAct.Path & Application.PathSeparator & "Result" & Application.PathSeparator
'Result - название папки с результатами'
If Dir(iPath, vbDirectory) = "" Then MkDir iPath
arrDic = dic.keys
Set Rng = Nothing
Application.DisplayAlerts = False
For i = 0 To UBound(arrDic)
rrs = Split(Mid(dic.Item(arrDic(i)), 2), "|")
If head Then Set Rng = Rows(1)
For Each rr In rrs
If Not Rng Is Nothing Then Set Rng = Union(Rows(rr), Rng) Else Set Rng = Rows(rr)
Next
Set wb = Workbooks.Add(1)
Set sh = wb.Sheets(1)
Rng.Copy
sh.[A1].PasteSpecial xlPasteColumnWidths
sh.[A1].PasteSpecial xlPasteAll
Set Rng = Nothing
wb.SaveAs iPath & Replace_symbols(arrDic(i)) & ".xlsx", xlOpenXMLWorkbook
wb.Close False
Next
Application.DisplayAlerts = True
End Sub
'Замена запрещённых символов в имени файла или папки'
Function Replace_symbols(ByVal txt As String) As String
St$ = "\/~!@#$%^&*=|`'"""
For i% = 1 To Len(St$)
txt = Replace(txt, Mid(St$, i, 1), "_")
Next
Replace_symbols = txt
End Function
- На второй строке кода, цифру 2 замените на номер столбца, в котором содержится критерий для разбиения
- Сохраните код Ctrl+S
- Сохраните файл Excel, как книгу с поддержкой макросов xlsm
- Выполните макрос Alt+F8
Папка с новыми файлами будет лежать по тому же пути, что и файл, в котором вы запускали макрос
Заключение
С помощью этого руководства и готового кода макроса Вы сможете сэкономить свое время и за несколько минут создать столько книг Excel, сколько уникальных значений в выбранном Вами столбце. Вся остальная информация автоматически перенесется в новые книги.
У нас Вы можете заказать выполнение задач по MS Excel и Google таблицам
А также, пройти бесплатные онлайн курсы по MS 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% и сокращает количество щелчков мышью на сотни каждый день!
Содержание
- Разделение таблицы по листам
- Постановка задачи
- Подготовка
- Способ 1. Макрос для деления по листам
- Способ 2. Создаем множественные запросы в Power Query
- Разнесение данных на разные листы/книги
- Данная функция является частью надстройки MulTEx
Разделение таблицы по листам
В Microsoft Excel есть много инструментов для сборки данных из нескольких таблиц (с разных листов или из разных файлов): прямые ссылки, функция ДВССЫЛ (INDIRECT) , надстройки Power Query и Power Pivot и т.д. С этой стороны баррикад всё выглядит неплохо.
Но если вы нарвётесь на обратную задачу — разнесения данных из одной таблицы на разные листы — то всё будет гораздо печальнее. На сегодняшний момент цивилизованных встроенных инструментов для такого разделения данных в арсенале Excel, к сожалению, нет. Так что придется задействовать макрос на Visual Basic, либо воспольоваться связкой макрорекордер+Power Query с небольшой «доработкой напильником» после.
Давайте подробно рассмотрим, как это можно реализовать.
Постановка задачи
Имеем в качестве исходных данных вот такую таблицу размером больше 5000 строк по продажам:
Задача: разнести данные из этой таблицы по городам на отдельные листы этой книги. Т.е. на выходе нужно получить на каждом листе только те строки из таблицы, где продажа была в соответствующем городе:
Подготовка
Чтобы не усложнять код макроса и сделать его максимально простым для понимания, выполним пару подготовительных действий.
Во-первых, создадим отдельную таблицу-справочник, где в единственном столбце будут перечислены все города, для которых нужно создать отдельные листы. Само-собой, в этом справочнике могут быть не все города, присутствующие в исходных данных, а только те, по которым нам нужны отчеты. Проще всего создать такую таблицу, используя команду Данные — Удалить дубликаты (Data — Remove duplicates) для копии столбца Город или функцию УНИК (UNIQUE) — если у вас последняя версия Excel 365.
Поскольку новые листы в Excel по умолчанию создаются перед (левее) текущего (предыдущего), то имеет смысл также отсортировать города в этом справочнике по убыванию (от Я до А) — тогда после создания листы-города расположатся по алфавиту.
Во-вторых, преобразуем обе таблицы в динамические («умные»), чтобы с ними было проще работать. Используем команду Главная — Форматировать как таблицу (Home — Format as Table) или сочетание клавиш Ctrl + T . На появившейся вкладке Конструктор (Design) назовём их таблПродажи и таблГорода, соответственно:
Способ 1. Макрос для деления по листам
На вкладке Разработчик (Developer) нажмите на кнопку Visual Basic или используйте сочетание клавиш Alt + F11 . В открывшемся окне редактора макросов вставьте новый пустой модуль через меню Insert — Module и скопируйте туда следующий код:
Здесь с помощью цикла For Each . Next реализован проход по ячейкам справочника таблГорода, где для каждого города происходит его фильтрация (метод AutoFilter) в исходной таблице продаж и затем копирование результатов на новый созданный лист. Попутно созданный лист переименовывается в то же имя города и на нем включается автоподбор ширины столбцов для красоты.
Запустить созданный макрос в Excel можно на вкладке Разработчик кнопкой Макросы (Developer — Macros) или сочетанием клавиш Alt + F8 .
Способ 2. Создаем множественные запросы в Power Query
У предыдущего способа, при всей его компактности и простоте, есть существенный недостаток — созданные макросом листы не обновляются при изменениях в исходной таблице продаж. Если обновление «на лету» необходимо, то придется использовать связку VBA+Power Query, а точнее — создавать с помощью макроса не просто листы со статическими данными, а обновляемые запросы Power Query.
Макрос в этом случае частично похож на предыдущий (в нём тоже есть цикл For Each . Next для перебора городов в справочнике), но внутри цикла будет уже не фильтрация и копирование, а создание запроса Power Query и выгрузка его результатов на новый лист:
После его запуска мы увидим те же листы по городам, но формировать их будут уже созданные запросы Power Query:
При любых изменениях в исходных данных достаточно будет обновить соответствующую таблицу правой кнопкой мыши — команда Обновить (Refresh) или обновить сразу все города оптом, используя кнопку Обновить всё на вкладке Данные (Data — Refresh All) .
Источник
Разнесение данных на разные листы/книги
Данная функция является частью надстройки MulTEx
|
Вызов команды:
MulTEx -группа Книги/Листы —Книги —Разнесение данных
Команда, делающее обратное Сбору данных с нескольких листов/книг — разносит данные листа на несколько других листов либо книг. Количество листов/книг зависит от количества уникальных значений критериев для разнесения. Листы и Книги создаются при выполнении команды. Для чего это может быть нужно? Например, есть график отпусков сотрудников, который надо разбить по фамилии руководителя отдела и каждому руководителю отправить по почте список только его сотрудников:
Сидеть и выбирать данные каждого сотрудника на отдельные листы вручную долго и скучно. Плюс еще и отправить надо на указанный адрес. А команда Разнесение данных сама разобьет данные на листы и книги и отправит их по указанным адресам.
Основные
Разнести:
- Все данные — при выборе будет произведено разнесение абсолютно всех данных, расположенных на листе.
- Указанный диапазон — будут разнесены только те данные, которые расположены внутри указанного диапазона. Диапазон следует указывать без заголовка. Иначе заголовок будет определен как отдельный критерий и для него будет так же создан свой лист/книга.
Критерии:
- На основании значений — разнесение данных происходит на основании значений в ячейках. На рисунках выше таблица разносится именно на основании значений и в качестве столбца с критериями указан столбец с фамилиями руководителей. Это значит, что после выполнения команды будет создана новая книга, содержащая ровно столько листов, сколько руководителей в таблице. И в каждом листе будут содержаться только те сотрудники, которые работают в отделе, подчиненном данному руководителю.
- На основании цвета заливки — разнесение данных происходит на основании цвета заливки ячеек. В данном случае новым листам/книгам будет присвоено имя, равное числовому коду цвета заливки ячеек, а цвет ярлыков листов — равен цвету заливки ячеек.
- На основании цвета шрифта — разнесение данных происходит на основании цвета шрифта. В данном случае новым листам/книгам будет присвоено имя, равное числовому коду цвета шрифта, а цвет ярлыков листов — равен цвету шрифта.
- На фиксированное количество строк — данные будут разнесены пропорционально указанному количеству строк в окне напротив данной опции. Будут созданы листы/книги, количество строк с данными в которых будет равно указанному. При этом имена книг и листов будут называться диапазонами строк. Например, если выбрать разбиение диапазона по 10 строк, то результирующие листы или книги будут названы: 1-10 , 11-20 , 21-30 и т.д.
Поместить:
- На разные листы одной книги — данные будут разнесены на разные листы одной книги. Книга создается в процессе выполнения команды. Количество листов соответствует количеству уникальных значений для разнесения. Имя каждого листа соответствует значению критерия, данные по которому занесены в этот лист. Если в качестве критерия выбрано На основании цвета заливки или На основании цвета шрифта, то именем листов будут числовые коды цвета заливки или шрифта ячеек.
Примечание: если в значении критерия имеются символы, недопустимые в имени листа( :/?*[] ), то эти символы удаляются. Если критерий содержит исключительно запрещенные символы, то они все будут удалены, а лист, на который будут помещены такие данные будет назван «_invalid_chars_» .
Если количество символов в значении превышает 30(максимально допустимое количество символов в имени листа — 31), то значение обрезается до 30 символов.
Примечание: если в значении критерия имеются символы, недопустимые в имени книги( :/?*»<>| ), то эти символы удаляются. Если критерий содержит исключительно запрещенные символы, то они все будут удалены, а книга, на которую будут помещены такие данные будет названа «_invalid_chars_».
Если количество символов в значении превышает 30, то значение обрезается до 30 символов(для большей «удобочитаемости», а так же для предотвращения ошибки, возникающей при длине пути к файлу, превышающей корректное определение файла операционной системой).
Номер столбца с критериями разнесения — указывается номер столбца, в котором расположены значения критериев для разнесения. Если на вкладке Основные выбрано Все данные — указывается номер столбца на листе. Т.е. если таблица данных расположена в диапазоне C3:G20 и критерии расположены в столбце D , то следует указать номер столбца 4 . Если на вкладке Основные выбрано Указанный диапазон, то указывается номер столбца внутри выбранного диапазона. Т.е. если указан диапазон C3:G20 и критерии расположены в столбце D , то следует указать номер столбца 2 .
Копировать только значения и форматы — в новые листы/книги будут скопированы только значения и форматы ячеек. Формулы будут заменены на значения, что позволяет избежать ошибочных значений #ССЫЛКА! (#REF!) при копировании формул со ссылками на другие листы.
Копировать заголовок на каждый лист — в новые листы/книги будет скопирован диапазон ячеек, указанный в поле. Диапазон для заголовков может быть расположен на любом листе любой открытой книги, а не обязательно на листе со значениями для разнесения. Рекомендуется указывать диапазон, ячейки самой нижней строки которого заполнены полностью. Это необходимо для корректного определения конца заголовка программой при вставке строк данных на лист.
Отправка
Если после разбиения данных на листы книги, необходимо отправлять созданные «нарезки» определенным адресатам — необходимо выбрать параметры рассылки на этой вкладке. Если по каким-то причинам какие-то данные не получится отправить — то будет создано сообщение, информирующее об этом.
Отправлять создаваемые листы/книги — если установлен, то созданные листы/книги будут отправлены на указанные адреса e-mail. Адреса могут быть указаны как в самой таблице для разнесения, так и отдельным списком соответствия.
- Брать адреса e-mail из столбца — указывается номер столбца. Если на вкладке Основные выбрано Все данные, то указывается номер столбца на листе, даже если сами данные для разнесения начинаются с 3 или любого другого столбца. Т.е. если таблица данных расположена в диапазоне C3:G20 и адреса e-mail при этом расположены в столбце G , то следует указать номер столбца 7 . Если на вкладке Основные выбрано Указанный диапазон, то указывается номер столбца внутри выбранного диапазона. Т.е. если указан диапазон C3:G20 и адреса e-mail при этом расположены в столбце G , то следует указать номер столбца 5 .
В данном случае необходимо, чтобы в самой таблице для разнесения присутствовал столбец с корректными адресами e-mail, на которые необходимо отправлять созданные файлы. При этом необязательно указывать e-mail для каждой строки — достаточно, если e-mail будет записан один раз для каждого критерия. - Адреса по списку соответствия — при выборе данного пункта необходимо заранее подготовить список соответствия адресов e-mail критериям в таблице. На примере таблицы выше список может выглядеть так:
При этом критерии и сами адреса e-mail должны располагаться в двух смежных столбцах: слева критерии, справа — адреса. На примере таблиц выше это столбцы B и C. Т.к. в качестве критерия разнесения на вкладке Основные выбраны были ФИО руководителя из столбца Руководитель, то в качестве списка соответствия необходимо указать диапазон B2:C5 .
Отправка — в этом блоке указывается способ отправки файлов и тема письма.
Тема письма — произвольный текст, который будет указан в создаваемых письмах в качестве темы. Если не указан, то в качестве темы каждого письма будет имя отправляемого файла.
- Отправлять средствами Excel — файлы будут отправлены почтовой программой, установленной по умолчанию. Аналогично стандартной отправке листов и книг из самого Excel:
- Excel 2007 : Кнопка Офис —Отправить (Send) —Сообщение (E-mail) —Как вложение (Send as attachment)
- Excel 2010 : Файл (File) —Сохранить и отправить (Save & Send) —Отправить (Send Using E-mail) —Как вложение (Send as attachment)
- Отправлять через Outlook — файлы будут отправлены при помощи почтовой программы Outlook. Будет создано стандартное сообщение с темой и в каждое сообщение будет вложен свой файл.
- Отправлять через CDO — отправка файлов данным методом не требует наличия почтовой программы на компьютере. Отправка производится при помощи CDO(Collaboration Data Objects) — библиотеки, встроенной в операционную систему Windows. Для того, чтобы её использовать необходимо лишь знать настройки почтового сервера(Яндекс, Рамблер, Mail.ru и др.).
- Выбрать шаблон — имя шаблона. Сделано для удобство выбора настроек отправки, чтобы не вбивать каждый раз одни и те же настройки. Данный метод использует те же настройки, что и команда Отправка листа/книги по почте. Поэтому если ранее в команде Отправка листа/книги по почте были созданы шаблоны для отправки через CDO — то можно использовать любой из этих шаблонов. Выбрав значение из списка остальные поля заполнятся значениями, записанными для данного шаблона. Если шаблонов нет — то данные о сервере, порте, пользователе и пароле вбиваются вручную.
Сервер — имя сервера SMTP. SMTP — Simple Mail Transfer Protocol — простой протокол передачи почты — это сетевой протокол, предназначенный для передачи электронной почты в сетях TCP/IP. Указывается почтовый сервер. Если у вас почтовый ящик на сервисе mail.ru заканчивается на inbox.ru, list.ru или bk.ru, то соответственно меняется и адрес SMTP-сервера(smtp.inbox.ru, smtp.list.ru и smtp.bk.ru). Точные значения для настроек серверов можно на сайте поставщика услуг(Яндекс, Mail и т.п.) в описаниях настроек для Outlook и найти тот параметр, который отвечает за SMTPserver(адрес SMTP-сервера, порт, а также правила авторизации).
Пользователь — имя пользователя. Как правило совпадает с учетной записью для входа в почту.
Пароль — пароль для входа в почту.
Порт — порт сервера SMTP. У большинства равен 25 или 465. Точное значения порта можно узнать только на самом сервере. Большинство из них размещают информацию по подключению почтовых программ к серверу, откуда можно узнать точные данные.
Использовать SSL — Secure Sockets Layer. Сейчас многие почтовые серверы используют шифрование методом SSL, что необходимо учитывать при настройке отправки. Если указанный почтовый сервер использует SSL и галка не будет поставлена — с большой долей вероятности письма просто не будет отправлены сервером. Точные значения для настроек серверов можно на сайте поставщика услуг(Яндекс, Mail и т.п.) в описаниях настроек для Outlook и найти тот параметр, который отвечает за SSL.
Источник