Podczas pracy z różnymi źródłami danych często możesz mieć trudności z kompilacją wielu skoroszytów i arkuszy przed dotarciem do jednego końcowego fragmentu danych. Wyobraź sobie sytuację, w której masz kilkaset skoroszytów do połączenia, zanim będziesz mógł zacząć dzień.
Nikt nie chce spędzać niekończących się godzin na pracy nad różnymi źródłami, otwierając każdy skoroszyt, kopiując i wklejając dane z różnych arkuszy, zanim w końcu stworzy jeden skonsolidowany skoroszyt. A jeśli makro VBA może to zrobić za Ciebie?
Dzięki temu przewodnikowi możesz utworzyć własny kod makr Excel VBA, aby skonsolidować wiele skoroszytów, wszystko w ciągu kilku minut (jeśli plików danych jest dużo).
Warunki wstępne tworzenia własnego kodu makr VBA
Potrzebujesz jednego skoroszytu do przechowywania kodu VBA, podczas gdy pozostałe skoroszyty danych źródłowych są oddzielne. Dodatkowo utwórz jeden skoroszyt Skonsolidowany do przechowywania skonsolidowanych danych ze wszystkich skoroszytów.
Utwórz folder Konsolidacja
w preferowanej lokalizacji, aby przechowywać wszystkie skoroszyty źródłowe. Po uruchomieniu makro przełączałoby się między każdym skoroszytem przechowywanym w tym folderze, kopiowało zawartość z różnych arkuszy i umieszczało je w skoroszycie skonsolidowanym.Tworzenie własnego kodu Excel VBA
Gdy wymagania wstępne znikną, nadszedł czas, aby zagłębić się w kod i zacząć hakować podstawy, aby dostosować go do swoich wymagań.
Związane z: Zaawansowane funkcje Microsoft Excel, które musisz znać
wciśnij Alt+F11 w programie Excel, aby otworzyć edytor kodu makr VBA. Wklej kod zapisany poniżej i zapisz plik jako skoroszyt z obsługą makr (.xlsm przedłużenie).
Sub openfiles()
'deklaruj zmienne używane w kodzie VBA'
Dim MyFolder As String, MyFile As String, wbmain As Workbook, lastrow As Long
'wyłącz te funkcje, aby usprawnić przetwarzanie kodu
Z aplikacją
.DisplayAlerts = Fałsz
.Aktualizacja ekranu = Fałsz
Kończyć z'zmień ścieżkę folderu, w którym mają być zapisywane twoje pliki
MyFolder = InputBox("Wprowadź ścieżkę folderu konsolidacji") & "\"
'zdefiniuj odwołanie do folderu w makrozmiennej
MójPlik = Katalog (MójFolder)
'otwórz pętlę, aby przejść przez każdy skoroszyt przechowywany w folderze
Rób, gdy Len (MyFile) > 0
'aktywuj skoroszyt konsolidacji
Windows("Konsolidacja"). Aktywuj
'oblicz ostatni wypełniony wiersz
Zakres ("a1048576"). Wybierz
Wybór. Koniec (xlUp).Wybierz
Aktywna komórka. Przesunięcie (1, 0). Wybierz'otwórz pierwszy skoroszyt w folderze Konsolidacja
Skoroszyty. Otwórz nazwę pliku:=MójFolder i MójPlik
Windows (MyFile). Aktywuj
'przełączaj każdy arkusz w skoroszytach, aby skopiować dane
Dim ws As Worksheet
Dla każdego ws w arkuszachws. Aktywuj
ws. AutoFilterMode = Fałsz'zignoruj nagłówek i skopiuj dane z wiersza 2'
Jeśli komórki (2, 1) = „” Następnie przejdź do 1Przejdź do 10
1: Dalej
10: Zakres("a2:az20000").Kopiuj
Windows("Konsolidacja"). Aktywuj
'wklej skopiowaną zawartość
Aktywny arkusz. Pasta
Windows (MyFile). Aktywuj
'zamknij otwarty skoroszyt po wklejeniu danych
Aktywny Skoroszyt. Blisko
'opróżnij pamięć podręczną, aby przechowywać wartość następnego skoroszytu
MójPlik = Katalog()
'otwórz następny plik w folderze
Pętla
'włącz wyłączone funkcje do wykorzystania w przyszłości
Z aplikacją
.DisplayAlerts = Prawda
.Aktualizacja ekranu = Prawda
Kończyć z
Napis końcowy
Wyjaśnienie kodu VBA
Pierwsza część kodu to zdefiniowanie podprogramu, który przechowuje cały twój kod VBA. Zdefiniuj podprogram za pomocą pod, po którym następuje nazwa kodu. Nazwa podrzędna może być dowolna; najlepiej byłoby zachować nazwę odpowiadającą kodowi, który zamierzasz napisać.
Związane z: Strony internetowe i blogi do nauki porad i wskazówek dotyczących programu Excel
Excel VBA rozumie zmienne utworzone przez użytkownika i odpowiadające im typy danych zadeklarowane za pomocą ciemny (wymiar).
Aby zwiększyć szybkość przetwarzania kodu, możesz wyłączyć aktualizowanie ekranu i pominąć wszystkie alerty, ponieważ spowalnia to wykonywanie kodu.
Użytkownik zostanie poproszony o podanie ścieżki do folderu, w którym przechowywane są pliki danych. Tworzona jest pętla, aby otworzyć każdy skoroszyt przechowywany w folderze, skopiować dane z każdego arkusza i dołączyć je do Konsolidacja zeszyt ćwiczeń.
Skoroszyt Konsolidacja jest aktywowany, aby program Excel VBA mógł obliczyć ostatni wypełniony wiersz. Zaznaczona jest ostatnia komórka w arkuszu, a ostatni wiersz jest obliczany w skoroszycie za pomocą funkcji przesunięcia. Jest to bardzo przydatne, gdy makro zaczyna dołączać dane z plików źródłowych.
Gdy pętla otwiera pierwszy plik źródłowy, filtry są usuwane z każdego pojedynczego arkusza (jeśli: istnieje), a dane od A2 do AZ20000 zostaną skopiowane i wklejone do Konsolidacji zeszyt ćwiczeń.
Proces jest powtarzany, aż wszystkie arkusze skoroszytu zostaną dołączone do głównego skoroszytu.
Związane z: Najlepsze kursy online do opanowania zaawansowanego programu Excel
Wreszcie plik źródłowy jest zamykany po wklejeniu wszystkich danych. Zostanie otwarty następny skoroszyt, dzięki czemu makro VBA może powtórzyć te same kroki dla następnego zestawu plików.
Pętla jest zakodowana tak, aby działała, dopóki wszystkie pliki nie zostaną automatycznie zaktualizowane w głównym skoroszycie.
Dostosowania oparte na użytkownikach
Czasami nie chcesz się martwić o wbudowane monity, zwłaszcza jeśli jesteś użytkownikiem końcowym. Jeśli wolisz na stałe zakodować ścieżkę folderu Consolidation w kodzie, możesz zmienić tę część kodu:
MyFolder = InputBox("Wprowadź ścieżkę folderu konsolidacji") & "\"
Do:
MyFolder = „Ścieżka folderu” i „\"
Dodatkowo możesz również zmienić odwołania do kolumn, ponieważ ten krok nie jest uwzględniony w tym kodzie. Po prostu zastąp odwołanie do kolumny końcowej wartością ostatniej wypełnionej kolumny (w tym przypadku AZ). Musisz pamiętać, że ostatni wypełniony wiersz jest obliczany za pomocą kodu makra, więc musisz zmienić tylko odwołanie do kolumny.
Aby jak najlepiej wykorzystać to makro, możesz go używać tylko do konsolidacji skoroszytów w tym samym formacie. Jeśli struktury są różne, nie możesz użyć tego makra VBA.
Konsolidacja wielu skoroszytów za pomocą makr Excel VBA
Tworzenie i modyfikowanie kodu Excel VBA jest stosunkowo łatwe, zwłaszcza jeśli rozumiesz niektóre niuanse w kodzie. VBA systematycznie przechodzi przez każdą linię kodu i wykonuje ją linia po linii.
Jeśli wprowadzisz jakiekolwiek zmiany w kodzie, musisz upewnić się, że nie zmienisz kolejności kodów, ponieważ zakłóci to wykonanie kodu.
Spraw, aby zarządzanie danymi stało się proste dzięki tym makram programu Excel.
Czytaj dalej
- Programowanie
- Programowanie
- Microsoft Excel
Gaurav Siyal ma dwuletnie doświadczenie w pisaniu dla szeregu firm zajmujących się marketingiem cyfrowym i dokumentach dotyczących cyklu życia oprogramowania.
Zapisz się do naszego newslettera
Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!
Kliknij tutaj, aby zasubskrybować