Jak połączyć dwa arkusze w programie Excel, tak jak w SQL?

121

Mam dwa arkusze w dwóch różnych plikach Excel. Oba zawierają listę nazwisk, numerów identyfikacyjnych i powiązanych danych. Jedna to główna lista zawierająca ogólne pola demograficzne, a druga to lista zawierająca tylko imię i nazwisko oraz identyfikator oraz adres. Ta lista została sprowadzona z głównej listy przez inne biuro.

Chcę użyć drugiej listy do filtrowania pierwszej. Ponadto chcę, aby wyniki zawierały inne pola z głównego arkusza roboczego obok pól adresowych z drugiego arkusza roboczego. Wiem, jak mogłem to zrobić bardzo łatwo z wewnętrznym złączeniem bazy danych, ale nie jestem pewien, jak to zrobić efektywnie w programie Excel. Jak połączyć dwa arkusze w programie Excel? Punkty bonusowe za pokazanie, jak również wykonywać połączenia zewnętrzne, i wolałbym wiedzieć, jak to zrobić bez potrzeby makra.

Joel Coehoorn
źródło
1
Uważam, że następująca strona jest bardzo przydatna: randomwok.com/excel/how-to-use-index-match
Tommy Bravo
randomwok.com/excel/how-to-use-index-match => szczególnie łatwe „przypomnienie” na końcu:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Odpowiedzi:

157

Dla 2007+ użytku Data> From Other Sources> From Microsoft Query:

  1. wybierz Excel Filei wybierz swój pierwszy cel
  2. wybierz kolumny
    (jeśli nie widzisz żadnej listy kolumn, sprawdź Options> System Tables)
  3. przejdź do Data> Connections> [wybierz połączenie właśnie utworzony]> Properties> Definition>Command text

Możesz teraz edytować to Command textjako SQL. Nie jestem pewien, jaka składnia jest obsługiwana, ale próbowałem łączenia niejawnego, „wewnętrznego łączenia”, „lewego łączenia” i związków, które wszystkie działają. Oto przykładowe zapytanie:

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2
Aprillion
źródło
1
Czy istnieje sposób na uniknięcie twardego zakodowania ścieżki? Czy ścieżka względna działałaby?
Rekin
25
Jako dodatkowy bonus, Microsoft Query pozwala doświadczyć 16-bitowych Common Controls do otwierania pliku Excela i okien wiadomości. W ten sposób możesz pamiętać, kiedy byłeś młody. :-)
Edward Brey
Czy to działa z plikami CSV? Korzystam z MS Office Professional Plus 2010 i nie widzę, jak wykonać krok 3 - czy pozostawiam okno dialogowe w kroku 2 zawieszone? W oknie dialogowym Połączenia nie ma opcji „wybierz nowe połączenie”.
John Freeman,
@JohnFreeman, ponieważ musisz wybrać jedną z dostępnych opcji zgodnie ze swoimi potrzebami (np. „Dodaj ...”)
Aprillion
3
Pamiętaj, że może zostać wyświetlone okno dialogowe z napisem „To źródło danych nie zawiera widocznych tabel”, a następnie okno dialogowe „Kreator zapytań - wybierz kolumny”. To z tego okna dialogowego chcesz kliknąć przycisk „Opcje”, a następnie zaznaczyć pole wyboru „Tabele systemowe”, aby zobaczyć dane, które chcesz zapytać.
Tola Odejayi
11

Poprzyj przyjętą odpowiedź. Chcę po prostu podkreślić „wybierz kolumny (jeśli nie widzisz żadnej listy kolumn, sprawdź Opcje> Tabele systemowe)”

Po wybraniu pliku programu Excel prawdopodobnie pojawi się this data source contains no visible tablesmonit, a dostępne karty i kolumny są puste. Microsoft przyznał, że jest to błąd polegający na tym, że zakładki w plikach programu Excel są traktowane jako „Tabele systemowe”, a opcja „Tabele systemowe” nie jest domyślnie zaznaczona. Więc nie panikuj na tym etapie, wystarczy kliknąć „opcja” i zaznaczyć „Tabele systemowe”, a następnie zobaczysz dostępne kolumny.

Ben Lin
źródło
8

WYSZUKAJ.PIONOWO i WYSZUKAJ.PIONOWO można użyć do wyszukiwania pasujących kluczy podstawowych (przechowywanych pionowo lub poziomo) i zwracania wartości z kolumn / wierszy „atrybutów”.

Reuben L.
źródło
bardzo przydatne dla arkuszy na tym samym skoroszycie (ale uważam, że funkcje INDEX + MATCH są jeszcze bardziej przydatne), trochę bardziej skomplikowane przy aktualizacji danych z zamkniętych zewnętrznych skoroszytów ...
Aprillion
7

Możesz użyć Microsoft Power Query, dostępnego dla nowszych wersji programu Excel (podobnego do przyjętej odpowiedzi, ale o wiele prostszego i łatwiejszego). Połączenia Power Query dołączają do „scalania”.

Najłatwiejszym sposobem jest utworzenie 2 arkuszy Excela jako tabel Excela. Następnie w programie Excel przejdź do karty wstążki Power Query i kliknij przycisk „Z Excela”. Po zaimportowaniu obu tabel do Power Query wybierz jedną i kliknij „Scal”.

anotherfred
źródło
3
O wiele łatwiej niż w przypadku innych proponowanych opcji. To powinna być odpowiedź! Usługa Power Query jest teraz uwzględniona w programie Excel 2016 na karcie Dane .
SliverNinja - MSFT
1
Kolejna funkcja, która wydaje się nie istnieć na komputerze Mac 😕
2017
4

Chociaż uważam, że odpowiedź Aprilliona za pomocą Microsoft Query jest doskonała, zainspirowało mnie to do skorzystania z Microsoft Access do dołączenia do arkuszy danych, co było dla mnie znacznie łatwiejsze.

Oczywiście musisz mieć zainstalowany MS Access.

Kroki:

  • Utwórz nową bazę danych Access (lub użyj scratch DB).
  • Służy Get External Datado importowania danych Excela jako nowych tabel.
  • Użyj, Relationshipsaby pokazać, jak połączone są twoje stoły.
  • Ustaw typ relacji, aby dopasować, co chcesz (reprezentujący lewy łączenie itp.)
  • Utwórz nowe zapytanie, które łączy twoje tabele.
  • Służy External Data->Export to Exceldo generowania wyników.

Naprawdę nie byłbym w stanie tego zrobić bez świetnej odpowiedzi Aprilliona.

Dizzley
źródło
Nigdy wcześniej nie korzystałem z dostępu, ale zajęło mi to tylko 10 minut. Skopiowałem / wkleiłem kolumny programu Excel do 2 tabel zamiast importować.
jiggunjer
3

W tabelach programu Excel nie można wstępnie tworzyć sprzężeń w stylu SQL z poziomu programu Excel. To powiedziawszy, istnieje wiele sposobów na osiągnięcie tego, co próbujesz zrobić.

W Excelu, jak mówi Reuben, formuły, które prawdopodobnie będą działać najlepiej, to VLOOKUPi HLOOKUP. W obu przypadkach pasujesz do unikalnego wiersza i zwraca on wartość podanej kolumny \ wiersza w lewo \ w dół od znalezionego identyfikatora.

Jeśli chcesz dodać tylko kilka dodatkowych pól do drugiej listy, dodaj formuły do ​​drugiej listy. Jeśli chcesz mieć tabelę stylu „łączenie zewnętrzne”, dodaj VLOOKUPformułę do pierwszej listy za pomocą, ISNAaby sprawdzić, czy wyszukiwanie zostało znalezione. Jeśli pomoc programu Excel nie zawiera wystarczających informacji na temat korzystania z nich w konkretnym przypadku, daj nam znać.

Jeśli wolisz używać SQL, połącz dane z programem bazy danych, utwórz zapytanie i wyeksportuj wyniki z powrotem do Excela. (W programie Access możesz importować arkusze programu Excel lub nazwane zakresy jako tabelę połączoną).

mischab1
źródło
12
właściwie możesz - nazywa się Microsoft Query
Aprillion
3

W XLTools.net stworzyliśmy dobrą alternatywę dla MS Query do pracy szczególnie z zapytaniami SQL względem tabel Excel. Nazywa się to zapytaniami SQL XLTools . Jest o wiele łatwiejszy w użyciu niż MS Query i działa naprawdę dobrze, jeśli potrzebujesz tylko utworzyć i uruchomić SQL - bez VBA, bez skomplikowanych manipulacji z MS Query ...

Za pomocą tego narzędzia możesz utworzyć dowolne zapytanie SQL względem tabel w skoroszycie Excela za pomocą wbudowanego edytora SQL i uruchomić je natychmiast z opcją umieszczenia wyniku w nowym lub dowolnym istniejącym arkuszu.

Możesz użyć prawie dowolnego rodzaju złączenia, w tym LEWE DOŁĄCZENIE ZEWNĘTRZNE (tylko PRAWE DOŁĄCZANIE ZEWNĘTRZNE i FULL ZEWNĘTRZNE DOŁĄCZENIE nie jest obsługiwane).

Oto przykład:

XLTools SQL Queries - Query Builder

Peter Liapin
źródło
2

W przypadku programu Excel 2007 Użytkownik: Dane> Z innych źródeł> Z zapytania Microsoft> przejdź do pliku Excel

Zgodnie z tym artykułem zapytanie z wersji XLS 2003 może spowodować „To źródło danych nie zawiera widocznych tabel”. błąd, ponieważ arkusze są traktowane jak tabela SYSTEM. Dlatego podczas tworzenia zapytania sprawdzaj opcje „Tabele systemowe” w oknie dialogowym „Kreator zapytań - Wybierz kolumny”.

Aby zdefiniować połączenie: okno dialogowe Microsoft Query> menu Tabela> Połączenia ...

Aby zwrócić dane do oryginalnego arkusza Excel, wybierz „Przywróć dane do arkusza Excel” z okna dialogowego Zapytanie Microsoft> menu Plik.

clarkttfu
źródło
0

Jeśli znasz się na bazach danych, możesz użyć programu SQL Server do połączenia obu arkuszy jako serwerów połączonych, a następnie użyć języka T-SQL do wykonania danych zaplecza. Następnie zakończ podłączając program Excel z powrotem do SQL i przeciągnij dane do tabeli (zwykłej lub przestawnej). Możesz również rozważyć użycie Powerpivot; umożliwi połączenia między dowolnymi źródłami baz danych, w tym Excelem używanym jako płaskie bazy danych.

dav
źródło
2
Masz rację, ale początkowe pytanie opiera się na użyciu arkusza kalkulacyjnego (lub dwóch) do wykonania funkcji bazy danych, więc nie jestem pewien, czy istnieje naprawdę skuteczny sposób na wykonanie zadania.
dav
0

Szukając tego samego problemu natknąłem się na RDBMerge , który moim zdaniem jest przyjaznym dla użytkownika sposobem scalania danych z wielu skoroszytów programu Excel, plików csv i xml w skoroszyt podsumowania.

lalthomas
źródło