Mam setki plików Excela w tym samym formacie (tj. 4 arkusze na plik Excela). Muszę połączyć wszystkie pliki w jeden cały plik śpiewu i tańca, który musi mieć ten sam format, co oryginały (tj. Zachować cztery oddzielne arkusze, z których wszystkie są identycznie nazwane).
Podczas gdy każdy plik ma taką samą strukturę, liczba kolumn (i nazw nagłówków) między arkuszem 1 i 2 (na przykład) jest inna. Więc nie można go połączyć w jeden plik ze wszystkim w jednym arkuszu!
Istnieją dwie komplikacje:
Muszę utworzyć kolumnę EXTRA w scalonym pliku (na arkuszu KAŻDY), aby zidentyfikować plik źródłowy („nazwa pliku”).
Pliki zawierają wiele zerowych wpisów danych (np. 55 wierszy przydatnych danych, po których następują setki wierszy zer), które muszę usunąć z scalonego pliku.
Nigdy nie używałem VBA, ale każdy musi zacząć gdzieś, jak przypuszczam.
źródło
Odpowiedzi:
To potężna prośba, ale miałem wieczór na spalenie, więc oto kod, który według mnie zadziała. (Nieznajomość formatów arkuszy nie pomaga, ale możemy z tego pracować.)
Otwórz nowy skoroszyt (będzie to Twój główny skoroszyt), przejdź do środowiska VBA (Alt + F11) i utwórz nowy moduł (Wstaw> Moduł). Wklej następujący kod VBA do nowego okna modułu:
Zapisz go i jesteśmy gotowi, aby zacząć go używać.
Uruchom makro
GiantMerge
. Musisz wybrać pliki Excela, które chcesz scalić (możesz zaznaczyć wiele plików za pomocą okna dialogowego, w zwykły sposób Windows (Ctrl, aby zaznaczyć wiele pojedynczych plików, Shift, aby wybrać zakres plików)). Nie musisz uruchamiać makra na wszystkich plikach, które chcesz scalić, możesz to zrobić tylko kilka razy. Po pierwszym uruchomieniu skonfiguruje on główny skoroszyt, aby mieć prawidłową liczbę arkuszy, nazywać arkusze na podstawie pierwszego skoroszytu wybranego do scalenia i dodawać do nagłówków.Założyłem następujące założenia (nie pełna lista):
Mam nadzieję że to pomoże.
źródło
If ws.Cells(r, c) <> 0 Then
naIf ws.Cells(r, c).Value <> 0 Then
. Zaktualizowałem mój kod w odpowiedzi powyżej. Ale nie mogę tego sprawdzić, ponieważ teraz pracuję. Jeśli to nie zadziała, dziś wieczorem będę wyglądać, kiedy wrócę do domu.Warto również wspomnieć, że Ron de Bruin stworzył fantastyczną wtyczkę Windows do łączenia arkuszy programu Excel o nazwie RDBMerge. Instrukcje można znaleźć tutaj: http://www.rondebruin.nl/merge.htm . To działało bez zarzutu, łącząc pliki xlsx w programie Excel 2007.
Tworzy dodatkową kolumnę w scalonym pliku zawierającą nazwę pliku źródłowego. Nie wiem jednak, jak obsługuje zerowe wpisy danych (druga część oryginalnego pytania).
źródło
Jeśli potrzebujesz narzędzia do scalenia tych plików Excela, sprawdź JMC Excel .
źródło
To projekt o przyzwoitej wielkości, ale bardzo wykonalny. Oto dobry początek VBA, na którym możesz budować. Pozwoli ci to przejrzeć wszystkie pliki, które musisz scalić, jeśli masz je (same) w jednym folderze. Skoroszyt główny, do którego się dołączasz, NIE powinien znajdować się w tym katalogu.
Teraz ty (lub ktoś inny) może dostarczyć kod pętli For na końcu. Mam nadzieję że to pomoże.
źródło
źródło
Metoda wykorzystująca prosty skrypt Pythona (znacznie krótszy niż VB!).
https://superuser.com/a/1138948/141182
źródło