Bagaimana saya bergabung dengan dua lembar kerja di Excel seperti yang saya lakukan di SQL?

121

Saya memiliki dua lembar kerja dalam dua file Excel yang berbeda. Keduanya berisi daftar nama, nomor id, dan data terkait. Satu adalah daftar master yang mencakup bidang demografi umum, dan yang lainnya adalah daftar yang hanya mencakup nama dan id, dan alamat. Daftar ini dikupas dari daftar utama oleh kantor lain.

Saya ingin menggunakan daftar ke-2 untuk memfilter yang pertama. Selain itu, saya ingin hasilnya menyertakan bidang lain dari lembar kerja utama di samping bidang alamat dari lembar kerja kedua. Saya tahu bagaimana saya bisa melakukan ini dengan sangat mudah dengan penggabungan basis data, tetapi saya kurang jelas tentang cara melakukan ini secara efisien di Excel. Bagaimana cara bergabung dengan dua lembar kerja di Excel? Poin bonus untuk menunjukkan cara melakukan outer joins juga, dan saya lebih suka mengetahui bagaimana melakukan ini tanpa membutuhkan makro.

Joel Coehoorn
sumber
1
Saya menemukan halaman berikut ini sangat berguna: randomwok.com/excel/how-to-use-index-match
Tommy Bravo
randomwok.com/excel/how-to-use-index-match => terutama "pengingat" yang mudah di akhir:=INDEX ( Column_I_want_a_return_value_from , ( MATCH ( My_Lookup_Value , Column_I_want_to_Lookup_against , 0 ))
Tommy Bravo

Jawaban:

157

Untuk 2007+ penggunaan Data> From Other Sources> From Microsoft Query:

  1. pilih Excel Filedan pilih excel 1 Anda
  2. pilih kolom
    (jika Anda tidak melihat daftar kolom, pastikan untuk memeriksa Options> System Tables)
  3. pergi ke Data> Connections> [pilih koneksi yang baru saja dibuat]> Properties> Definition>Command text

Anda sekarang dapat mengedit ini Command textsebagai SQL. Tidak yakin apa sintaks yang didukung, tetapi saya mencoba bergabung secara implisit, "bergabung dalam", "bergabung dengan kiri" dan serikat yang semuanya bekerja. Berikut ini contoh permintaan:

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
sumber
1
Apakah ada cara untuk menghindari hardcoding jalan? Apakah jalur relatif akan berfungsi?
Rekin
25
Sebagai bonus tambahan, Microsoft Query memungkinkan Anda mengalami Kontrol Umum gaya 16-bit untuk membuka file Excel dan kotak pesan. Dengan begitu Anda bisa mengingat ketika Anda masih muda. :-)
Edward Brey
Apakah ini berfungsi dengan file CSV? Saya menggunakan MS Office Professional Plus 2010 dan tidak melihat cara mengikuti langkah 3 - apakah saya meninggalkan dialog di langkah 2 menggantung? Tidak ada "pilih koneksi baru Anda" di dialog Koneksi saya.
John Freeman
@JohnFreeman karena Anda harus memilih salah satu opsi yang tersedia sesuai dengan kebutuhan Anda (mis. 'Tambah ...')
Aprillion
3
Perhatikan bahwa Anda mungkin mendapatkan kotak dialog yang mengatakan 'Sumber data ini tidak mengandung tabel yang terlihat', diikuti oleh dialog 'Query Wizard - Choose Columns'. Dari dialog ini Anda ingin mengklik tombol 'Opsi', lalu centang kotak 'Tabel Sistem' untuk melihat data yang ingin Anda tanyakan.
Tola Odejayi
11

Mendukung jawaban yang diterima. Saya hanya ingin menekankan pada "pilih kolom (jika Anda tidak melihat daftar kolom, pastikan untuk memeriksa Pilihan> Tabel Sistem)"

Setelah Anda memilih file excel, sangat mungkin Anda akan melihat this data source contains no visible tablesprompt, dan tab dan kolom yang tersedia tidak ada. Microsoft mengakui itu adalah bug yang tab di file excel diperlakukan sebagai "System Tables", dan opsi untuk "System Tables" tidak dipilih secara default. Jadi jangan panik pada langkah ini, Anda hanya perlu mengklik "opsi" dan periksa "Tabel Sistem", maka Anda melihat kolom yang tersedia.

Ben Lin
sumber
8

VLOOKUP dan HLOOKUP dapat digunakan untuk mencari kunci utama yang cocok (disimpan secara vertikal atau horizontal) dan mengembalikan nilai dari kolom / baris 'atribut'.

Reuben L.
sumber
sangat berguna untuk lembar pada buku kerja yang sama (tetapi saya menemukan fungsi INDEX + MATCH bahkan lebih berguna), sedikit lebih rumit ketika memperbarui data dari buku kerja eksternal tertutup ...
Aprillion
7

Anda dapat menggunakan Microsoft Power Query, tersedia untuk versi Excel yang lebih baru (mirip dengan jawaban yang diterima, tetapi jauh lebih sederhana dan lebih mudah). Panggilan Power Query bergabung dengan 'gabungan'.

Cara termudah adalah dengan memiliki 2 lembar Excel Anda sebagai tabel Excel. Kemudian di Excel, buka tab pita Power Query, dan klik tombol 'Dari Excel'. Setelah Anda mengimpor kedua tabel ke Power Query, pilih satu dan klik 'Gabung'.

orang lain
sumber
3
Jauh lebih mudah daripada opsi yang diusulkan lainnya. Ini seharusnya jawabannya! Power Query disertakan sekarang di Excel 2016 di bawah tab Data .
SliverNinja - MSFT
1
Fitur lain yang sepertinya tidak ada pada Mac ju
juandesant
4

Meskipun saya pikir jawaban Aprillion menggunakan Microsoft Query sangat bagus, itu mengilhami saya untuk menggunakan Microsoft Access untuk bergabung dengan lembar data yang saya temukan jauh lebih mudah.

Anda harus menginstal MS Access tentu saja.

Langkah:

  • Buat database Access baru (atau gunakan DB awal).
  • Gunakan Get External Datauntuk mengimpor data Excel Anda sebagai tabel baru.
  • Gunakan Relationshipsuntuk menunjukkan bagaimana tabel Anda digabungkan.
  • Setel jenis Hubungan agar sesuai dengan apa yang Anda inginkan (mewakili gabungan kiri dll.)
  • Buat kueri baru yang bergabung dengan tabel Anda.
  • Gunakan External Data->Export to Exceluntuk menghasilkan hasil Anda.

Saya benar-benar tidak bisa melakukan itu tanpa jawaban yang bagus dari Aprillion.

Dizzley
sumber
Saya belum pernah menggunakan akses sebelum hari ini, tetapi ini hanya memakan waktu 10 menit. Saya menyalin / menempelkan kolom excel ke dalam 2 tabel alih-alih mengimpor.
jiggunjer
3

Anda tidak dapat membentuk sebelumnya gaya SQL bergabung di tabel Excel dari dalam Excel. Yang mengatakan, ada banyak cara untuk mencapai apa yang Anda coba lakukan.

Di Excel, seperti yang dikatakan Reuben, rumus yang mungkin paling berhasil adalah VLOOKUPdan HLOOKUP. Dalam kedua kasus, Anda cocok pada baris unik dan mengembalikan nilai kolom \ baris yang diberikan ke kiri \ ke bawah dari id yang ditemukan.

Jika Anda hanya ingin menambahkan beberapa bidang tambahan ke daftar kedua, maka tambahkan rumus ke daftar kedua. Jika Anda menginginkan tabel gaya "gabung luar", lalu tambahkan VLOOKUPrumus ke daftar pertama dengan ISNAuntuk menguji apakah pencarian ditemukan. Jika Bantuan Excel tidak memberi Anda cukup detail tentang cara menggunakannya dalam contoh khusus Anda, beri tahu kami.

Jika Anda lebih suka menggunakan SQL kemudian menautkan data ke program database Anda, membuat kueri Anda, dan mengekspor hasilnya kembali ke Excel. (Di Access, Anda dapat mengimpor lembar kerja Excel atau Named Ranges sebagai Tabel Tertaut.)

mischab1
sumber
12
sebenarnya, Anda bisa - ini disebut Microsoft Query
Aprillion
3

Di XLTools.net kami telah membuat alternatif yang baik untuk MS Query untuk bekerja terutama dengan SQL Queries terhadap tabel Excel. Ini disebut XLTools SQL Queries . Ini jauh lebih mudah untuk digunakan daripada MS Query dan bekerja dengan sangat baik jika Anda hanya perlu membuat dan menjalankan SQL - tanpa VBA, tidak ada manipulasi kompleks dengan ...

Dengan alat ini Anda bisa membuat kueri SQL apa pun terhadap tabel dalam buku kerja Excel menggunakan editor SQL yang disematkan dan menjalankannya segera dengan opsi untuk menempatkan hasilnya pada lembar kerja baru atau yang sudah ada.

Anda dapat menggunakan hampir semua jenis join termasuk LEFT OUTER JOIN (hanya RIGHT OUTER JOIN dan FULL OUTER JOIN tidak didukung).

Berikut ini sebuah contoh:

XLTools SQL Queries - Pembuat Kueri

Peter Liapin
sumber
2

Untuk Pengguna Excel 2007: Data> Dari Sumber Lain> Dari Microsoft Query> browse ke file Excel

Menurut artikel ini , kueri dari XLS versi 2003 mungkin menghasilkan "Sumber data ini tidak mengandung tabel yang terlihat." kesalahan karena lembar kerja Anda diperlakukan sebagai tabel SISTEM. Jadi periksa "System Tables" di opsi dialog "Query Wizard - Choose Columns" ketika Anda membuat kueri akan bekerja.

Untuk menentukan gabungan Anda: Microsoft Query dialog> Table table> Joins ...

Untuk mengembalikan data ke lembar Excel asli Anda, pilih "Kembalikan data ke Lembar Excel" dari dialog Microsoft Query> Menu file.

clarkttfu
sumber
0

Jika Anda cukup terbiasa dengan database, Anda bisa menggunakan SQL Server untuk menghubungkan kedua lembar kerja sebagai Server Tertaut dan kemudian menggunakan T-SQL untuk melakukan pekerjaan data back-end Anda. Kemudian selesaikan dengan menghubungkan kembali Excel ke SQL dan tarik data ke dalam tabel (reguler atau pivot). Anda juga dapat mempertimbangkan menggunakan Powerpivot; itu akan memungkinkan gabungan antara sumber basis data apa pun - termasuk Excel yang digunakan sebagai basis data datar.

dav
sumber
2
Anda benar, tetapi pertanyaan awal didasarkan pada penggunaan spreadsheet (atau dua) untuk melakukan fungsi database, jadi saya tidak yakin ada cara yang benar-benar efisien untuk menyelesaikan tugas.
dav
0

Mencari masalah yang sama saya menemukan RDBMerge , yang saya pikir adalah cara yang ramah pengguna untuk Menggabungkan Data dari Beberapa Buku Kerja Excel, file csv dan xml ke dalam Buku Kerja Ringkasan.

lalthomas
sumber