Транспонирование Колонка для листов Excel с помощью VBA
Сценарий
Предположим, у вас есть книга Excel. Имеет 3 листа. На листе 5 столбцов. В каждом столбце указаны данные о разных городах. Каждый лист содержит 5 одинаковых столбцов с разными данными по одним и тем же городам.
Задача:
Нам нужно создать файл, содержащий разные листы для каждого уникального столбца. Каждый лист должен содержать данные соответствующего столбца. В итоге у нас будет 5 листов по 3 столбца на каждом. В некотором смысле это перенос столбцов на листы.
Логика:
Во-первых, нам нужно создать книгу, содержащую разные листы для каждого столбца. Мы можем сделать это, посмотрев на заголовки первого листа нашего исходного файла.
Затем нам нужно перебрать каждый лист исходного листа, чтобы скопировать каждый столбец на соответствующие листы новой книги.
Код 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 [
Transpose 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]
| Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.