Columna transpuesta a hojas de Excel con VBA
Escenario
Suponga que tiene un libro de Excel. Tiene 3 hojas. Una hoja contiene 5 columnas. Cada columna tiene datos de una ciudad diferente. Cada hoja contiene 5 columnas similares con datos diferentes de las mismas ciudades.
Desafío:
Necesitamos crear un archivo que contenga diferentes hojas para cada columna única. Cada hoja debe contener los datos de sus respectivas columnas. Al final, tendremos 5 hojas con 3 columnas cada una. En cierto modo, está transponiendo columnas a hojas.
Lógica:
Primero, necesitamos crear un libro de trabajo que contenga diferentes hojas para cada columna. Podemos hacer esto mirando los encabezados de la primera hoja de nuestro archivo original.
A continuación, debemos recorrer cada hoja de la hoja original para copiar cada columna en las hojas correspondientes del nuevo libro.
Código VBA para transponer columnas a hojas.
Veamos primero el código VBA para transponer las hojas. Te lo explico a continuación.
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
Puede descargar el archivo a continuación para usarlo inmediatamente o copiar el código para personalizarlo según sus necesidades.
Una vez que ejecute el código, inmediatamente creará un archivo de Excel que tendrá 5 hojas, y cada hoja contiene 3 columnas de datos de la misma ciudad.
`enlace: /wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [
Transpose Column To Sheets]
¿Cómo funciona?
En el código de ejemplo anterior, asumimos que el archivo comienza desde la primera celda de cada hoja y que cada hoja contiene el mismo número de columnas.
En las primeras líneas de código, hemos declarado las variables que necesitaremos en el procedimiento. Hemos guardado los encabezados de las columnas en una variable denominada cols. También hemos creado un archivo .xlsx, denominado result.xlsx *.
A continuación, hemos utilizado un bucle para crear el mismo número de hojas en result.xlsx que en encabezados incols.
'loop to create sheets For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next
A continuación, hemos utilizado un bucle anidado. El primer ciclo consiste en iterar hojas en el archivo original. Siguiente ciclo para copiar cada columna y pegarla en cada hoja en el archivo results.xlsx.
Al final, guardamos el resultado del libro de trabajo.xlsx y lo cerramos. Y ya está.
Así que sí, chicos, así es como pueden copiar cada columna a una nueva hoja en Excel usando VBA. Esto fue preguntado por nuestro usuario Mahmood en la sección de comentarios.
Pensé que merecía un artículo para que esté disponible para todos. Aqui lo tienes. Espero que haya sido lo suficientemente explicativo. Si aún tiene alguna duda o cualquier otra consulta, pregunte en la sección de comentarios a continuación.
Artículos relacionados:
Descarga el archivo de trabajo.
link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Desactivar mensajes de advertencia usando VBA en Microsoft Excel 2016]
| Para desactivar los mensajes de advertencia que interrumpen el código VBA en ejecución, usamos la clase Application.
link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Add And Save New Workbook Using VBA In Microsoft Excel 2016]
| Para agregar y guardar libros de trabajo usando VBA usamos la clase Workbooks. Workbooks.Add agrega un nuevo libro fácilmente, sin embargo …
Artículos populares:
link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-incrementa-your-productividad [50 accesos directos de Excel para aumentar su productividad]
| Acelera tu tarea. Estos 50 atajos le permitirán trabajar aún más rápido en Excel.
link: / fórmulas-y-funciones-introducción-de-vlookup-function [La función VLOOKUP en Excel]
| Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas. enlace: / tips-countif-in-microsoft-excel [COUNTIF en Excel 2016]
| Cuente valores con condiciones usando esta asombrosa función.
No necesita filtrar sus datos para contar un valor específico. La función Countif es esencial para preparar su tablero.
link: / excel-formula-and-function-excel-sumif-function [Cómo utilizar la función SUMIF en Excel]
| Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.