Scenario

Supponi di avere una cartella di lavoro Excel. Dispone di 3 fogli. Un foglio contiene 5 colonne. Ogni colonna ha dati di una città diversa. Ogni foglio contiene 5 colonne simili con dati diversi delle stesse città.

image

Sfida:

Dobbiamo creare un file che contenga fogli diversi per ogni colonna unica. Ogni foglio dovrebbe contenere i dati della rispettiva colonna. Alla fine, avremo 5 fogli con 3 colonne ciascuno. In un certo senso, traspone le colonne in fogli.

image

Logica:

Innanzitutto, dobbiamo creare una cartella di lavoro che contenga fogli diversi per ogni colonna. Possiamo farlo guardando i titoli del primo foglio del nostro file originale.

Successivamente, è necessario scorrere ogni foglio del foglio originale per copiare ogni colonna nei fogli corrispondenti della nuova cartella di lavoro.

Codice VBA per trasporre le colonne in fogli.

Vediamo prima il codice VBA per trasporre i fogli. Lo spiego di seguito.

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

Puoi scaricare il file qui sotto per usarlo immediatamente o copiare il codice per personalizzarlo secondo le tue necessità.

Una volta eseguito il codice, creerà immediatamente un file excel che avrà 5 fogli, con ogni foglio contenente 3 colonne dei dati della stessa città.

`link: /wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [

image 48Transpose Column To Sheets]

Come funziona?

Nel codice di esempio sopra, abbiamo assunto che il file inizi dalla prima cella di ogni foglio e ogni foglio contenga lo stesso numero di colonne.

Nelle prime righe di codice abbiamo dichiarato le variabili di cui avremo bisogno nella procedura. Abbiamo salvato le intestazioni delle colonne in una variabile denominata cols, abbiamo anche creato un file .xlsx, denominato result.xlsx *.

Successivamente, abbiamo utilizzato un ciclo per creare lo stesso numero di fogli in result.xlsx come in header incols.

'loop to create sheets

For x = 1 To cols.Count

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

Next

Successivamente, abbiamo utilizzato un ciclo annidato. Il primo ciclo consiste nell’iterare i fogli nel file originale. Ciclo successivo per copiare ogni colonna e incollarla in ogni foglio nel file results.xlsx.

Alla fine, stiamo salvando la cartella di lavoro result.xlsx e chiudendola. Ed è fatto.

Quindi sì ragazzi, è così che puoi copiare ogni colonna in un nuovo foglio in Excel usando VBA. Questo è stato chiesto dal nostro utente Mahmoodin nella sezione commenti.

Ho pensato che meritasse un articolo in modo che possa essere disponibile per tutti noi. Ecco qua. Spero sia stato abbastanza esplicativo. Se hai ancora dubbi o qualsiasi altra domanda, chiedi nella sezione commenti qui sotto.

Articoli correlati:

Scarica il file di lavoro.

link: / general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Disattiva i messaggi di avviso usando VBA in Microsoft Excel 2016] | Per disattivare i messaggi di avviso che interrompono il codice VBA in esecuzione, utilizziamo la classe Application.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Aggiungi e salva una nuova cartella di lavoro usando VBA in Microsoft Excel 2016] | Per aggiungere e salvare cartelle di lavoro utilizzando VBA utilizziamo la classe Cartelle di lavoro. Workbooks.Add aggiunge facilmente una nuova cartella di lavoro, tuttavia …​

Articoli popolari:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-aumentare-la-produttività [50 scorciatoie Excel per aumentare la produttività] | Diventa più veloce nel tuo compito. Queste 50 scorciatoie ti faranno lavorare ancora più velocemente su Excel.

link: / formule-e-funzioni-introduzione-di-vlookup-funzione [La funzione CERCA.VERT in Excel] | Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Contare i valori con le condizioni utilizzando questa straordinaria funzione.

Non è necessario filtrare i dati per contare un valore specifico. La funzione Countif è essenziale per preparare la tua dashboard.

link: / excel-formula-and-function-excel-sumif-function [Come usare la funzione SUMIF in Excel] | Questa è un’altra funzione essenziale della dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.