Сценарий

Предположим, у вас есть книга Excel. Имеет 3 листа. На листе 5 столбцов. В каждом столбце указаны данные о разных городах. Каждый лист содержит 5 одинаковых столбцов с разными данными по одним и тем же городам.

image

Задача:

Нам нужно создать файл, содержащий разные листы для каждого уникального столбца. Каждый лист должен содержать данные соответствующего столбца. В итоге у нас будет 5 листов по 3 столбца на каждом. В некотором смысле это перенос столбцов на листы.

image

Логика:

Во-первых, нам нужно создать книгу, содержащую разные листы для каждого столбца. Мы можем сделать это, посмотрев на заголовки первого листа нашего исходного файла.

Затем нам нужно перебрать каждый лист исходного листа, чтобы скопировать каждый столбец на соответствующие листы новой книги.

Код VBA для транспонирования столбцов в листы.

Давайте сначала посмотрим код VBA для транспонирования листов. Я объясню это ниже.

Sub TransposeColsToSheets()

'varibles

Dim wb As Workbook

Dim twb As Workbook

Dim lstRw As Integer

Dim lstCl As Integer

Dim cols As Range

With Application

.DisplayAlerts = False

.ScreenUpdating = False

End With

'creating new file

Set wb = Workbooks.Add

'saving the file. Replace the path with your destination.

wb.SaveAs "C:\Users\Manish Singh\Desktop\Excel Tip\result.xlsx"

Set twb = ThisWorkbook

twb.Sheets(1).Activate

lstCl = Cells(1, Columns.Count).End(xlToLeft).Column

'identfying headers for city names

Set cols = Range(Cells(1, 1), Cells(1, lstCl))

'loop to create sheets

For x = 1 To cols.Count

wb.Sheets.Add.Name = "page" & x

Next

'loop to transpose columns to sheets

For Each sh In twb.Sheets

For x = 1 To cols.Count

sh.Activate

lstRw = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, x), Cells(lstRw, x)).Copy

wb.Sheets("page" & x).Activate

lstCl = Cells(1, Columns.Count).End(xlToLeft).Column + 1

Range(Cells(1, lstCl), Cells(1, lstCl)).PasteSpecial xlPasteAll

Next x

Next sh

'saving and closing the result workbook

wb.Save

wb.Close

With Application

.DisplayAlerts = True

.ScreenUpdating = True

End With

End Sub

Вы можете загрузить любимый файл, чтобы сразу использовать его, или скопировать код, чтобы настроить его в соответствии с вашими потребностями.

Как только вы запустите код, он сразу же создаст файл Excel с 5 листами, каждый из которых будет содержать 3 столбца с данными одного и того же города.

`ссылка: /wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [

image 48Transpose Column To Sheets]

Как это работает?

В приведенном выше примере кода мы предположили, что файл начинается с первой ячейки каждого листа, и каждый лист содержит одинаковое количество столбцов.

В первых нескольких строках кода мы объявили переменные, которые нам понадобятся в процедуре. Мы сохранили заголовки столбцов в переменной с именем cols. Мы также создали файл .xlsx с именем result.xlsx *.

Затем мы использовали цикл для создания того же количества листов в result.xlsx, что и в header incols.

'loop to create sheets

For x = 1 To cols.Count

wb.Sheets.Add.Name = "page" & x

Next

Далее мы использовали вложенный цикл. Первый цикл — перебрать листы в исходном файле. Следующий цикл для копирования каждого столбца и вставки его на каждый лист в файле results.xlsx.

В конце концов, мы сохраняем книгу result.xlsx и закрываем ее. И это сделано.

Так что да, ребята, вот как вы можете скопировать каждый столбец на новый лист в Excel с помощью VBA. Об этом спросил наш пользователь Махмуд в разделе комментариев.

Я подумал, что это заслуживает статьи, чтобы сделать ее доступной для всех нас. Вот оно. Надеюсь, это было достаточно объяснительным. Если у вас все еще есть какие-либо сомнения или другие вопросы, задайте их в разделе комментариев ниже.

Статьи по теме:

Скачайте рабочий файл.

link: / general-themes-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Отключить предупреждающие сообщения с помощью VBA в Microsoft Excel 2016] | Чтобы отключить предупреждающие сообщения, которые прерывают выполнение кода VBA, мы используем класс Application.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Добавить и сохранить новую книгу с помощью VBA в Microsoft Excel 2016] | Для добавления и сохранения книг с помощью VBA мы используем класс Workbooks. Workbooks.Add легко добавляет новую книгу …​

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков заставят вас работать в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее часто используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию.

Вам не нужно фильтровать данные для подсчета определенного значения. Функция Countif важна для подготовки вашей приборной панели.

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.