Transpozycja kolumny do arkuszy Excela za pomocą VBA

Spisie treści:

Anonim

Scenariusz

Załóżmy, że masz skoroszyt programu Excel. Posiada 3 arkusze. Arkusz zawiera 5 kolumn. Każda kolumna zawiera inne dane miasta. Każdy arkusz zawiera 5 podobnych kolumn z różnymi danymi tych samych miast.

Wyzwanie:

Musimy stworzyć plik zawierający różne arkusze dla każdej unikalnej kolumny. Każdy arkusz powinien zawierać dane odpowiedniej kolumny. Na koniec otrzymamy 5 arkuszy z 3 kolumnami każdy. W pewnym sensie jest to transpozycja kolumn na arkusze.

Logika:

Najpierw musimy utworzyć skoroszyt zawierający różne arkusze dla każdej kolumny. Możemy to zrobić, patrząc na nagłówki pierwszego arkusza naszego oryginalnego pliku.

Następnie musimy przejść przez każdy arkusz oryginalnego arkusza, aby skopiować każdą kolumnę do odpowiednich arkuszy nowego skoroszytu.

Kod VBA do transpozycji kolumn do arkuszy.

Zobaczmy kod VBA, aby najpierw transponować arkusze. Wyjaśnię to poniżej.

Sub TransposeColsToSheets() 'zmienne Dim wb As Workbook Dim twb As Workbook Dim lstRw As Integer Dim lstCl As Integer Dim cols As Range Z aplikacją .DisplayAlerts = False .ScreenUpdating = False Koniec z 'tworzeniem nowego pliku Ustaw wb ='Workbooks.Add plik. Zastąp ścieżkę swoim miejscem docelowym. 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 'identyfikacja nagłówków nazw miast Ustaw cols = Range(Cells(1, 1), Cells(1, lstCl)) 'pętla do tworzenia arkuszy For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Następna 'pętla do transpozycji kolumn do arkuszy 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("strona" & x).Activate lstCl = Cells(1, Columns.Count).End(xlToLeft).Column + 1 Range(Cells(1, lstCl) ), Cells(1, lstCl)).PasteSpecial xlPasteAll Next x Next sh 'zapisywanie i zamykanie skoroszytu wyników wb.Save wb.Close With Application .DisplayAlerts = True .ScreenUpdating = True End With End Sub 

Możesz pobrać plik poniżej, aby natychmiast go użyć, lub skopiować kod, aby dostosować go do swoich potrzeb.

Po uruchomieniu kodu natychmiast utworzy plik Excela, który będzie miał 5 arkuszy, z których każdy będzie zawierał 3 kolumny danych tego samego miasta.
Transpozycja kolumny do arkuszy

Jak to działa?

W powyższym przykładowym kodzie założyliśmy, że plik zaczyna się od pierwszej komórki każdego arkusza, a każdy arkusz zawiera taką samą liczbę kolumn.

W pierwszych kilku wierszach kodu zadeklarowaliśmy zmienne, których będziemy potrzebować w procedurze. Zapisaliśmy nagłówki kolumn w zmiennej o nazwie płk.Stworzyliśmy również plik .xlsx o nazwie wynik.xlsx.

Następnie użyliśmy pętli, aby utworzyć taką samą liczbę arkuszy w result.xlsx jak w nagłówku wpłk.

'pętla do tworzenia arkuszy For x = 1 To cols.Count wb.Sheets.Add.Name = "page" & x Next 

Następnie użyliśmy pętli zagnieżdżonej. Pierwsza pętla polega na iterowaniu arkuszy w oryginalnym pliku. Następna pętla do kopiowania każdej kolumny i wklejania jej do każdego arkusza w pliku results.xlsx.

Na koniec zapisujemy ze skoroszytu result.xlsx i zamykamy go. I gotowe.

Więc tak, w ten sposób możesz skopiować każdą kolumnę do nowego arkusza w programie Excel za pomocą VBA. Poprosił o to nasz użytkownikMahmood w sekcji komentarzy. Pomyślałem, że zasłużył na artykuł, aby mógł być dostępny dla nas wszystkich. Masz to. Mam nadzieję, że było to wystarczająco wyjaśniające. Jeśli nadal masz jakiekolwiek wątpliwości lub inne pytania, zapytaj w sekcji komentarzy poniżej.

Podziel arkusz Excela na wiele plików na podstawie kolumny za pomocą VBA | Ten kod VBA dzieli arkusz Excela na podstawie unikalnych wartości w określonej kolumnie. Pobierz plik roboczy.

Wyłącz komunikaty ostrzegawcze za pomocą VBA w programie Microsoft Excel 2016 | Aby wyłączyć komunikaty ostrzegawcze, które przerywają działający kod VBA, używamy klasy Application.

Dodaj i zapisz nowy skoroszyt za pomocą VBA w programie Microsoft Excel 2016 | Do dodawania i zapisywania skoroszytów za pomocą VBA używamy klasy Workbooks. Workbooks.Add łatwo dodaje nowy skoroszyt, jednak…

Popularne artykuły:

50 skrótów Excela zwiększających produktywność | Przyspiesz swoje zadanie. Te 50 skrótów przyspieszy pracę w programie Excel.

Funkcja WYSZUKAJ.PIONOWO w programie Excel | Jest to jedna z najczęściej używanych i popularnych funkcji programu Excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

LICZ.JEŻELI w programie Excel 2016 | Policz wartości z warunkami za pomocą tej niesamowitej funkcji. Nie musisz filtrować danych, aby policzyć konkretną wartość. Funkcja Countif jest niezbędna do przygotowania deski rozdzielczej.

Jak korzystać z funkcji SUMA.JEŻELI w programie Excel | To kolejna ważna funkcja deski rozdzielczej. Pomaga to zsumować wartości w określonych warunkach.