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 arkuszach

ws. Aktywuj
ws. AutoFilterMode = Fałsz

'zignoruj ​​nagłówek i skopiuj dane z wiersza 2'
Jeśli komórki (2, 1) = „” Następnie przejdź do 1

Przejdź 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.

5 fajnych makr Microsoft Excel do sortowania danych

Spraw, aby zarządzanie danymi stało się proste dzięki tym makram programu Excel.

Czytaj dalej

UdziałĆwierkaćE-mail
Powiązane tematy
  • Programowanie
  • Programowanie
  • Microsoft Excel
O autorze
Gaurav Siyal (19 opublikowanych artykułów)

Gaurav Siyal ma dwuletnie doświadczenie w pisaniu dla szeregu firm zajmujących się marketingiem cyfrowym i dokumentach dotyczących cyklu życia oprogramowania.

Więcej od Gaurava Siyala

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ć