Di Excel, saya memiliki spreadsheet yang menarik data dari Database SQL ke dalam tabel dan kemudian menghasilkan laporan berdasarkan data itu. Sayangnya, data dalam database SQL ini tidak lengkap dan saya ingin memasukkan baris tambahan dalam set hasil yang dimasukkan secara manual ke dalam spreadsheet.
Seperti yang saya ingin, saya tidak bisa hanya memasukkan baris-baris tambahan ini secara manual ke tabel karena mereka akan dihapus setiap kali Excel menarik data baru dari Database SQL. Jadi sebagai gantinya, saya sedang mempertimbangkan membuat tabel terpisah dengan judul kolom yang sama pada lembar baru dan memasukkan data di sana, dan kemudian membuat tabel ketiga di lembar lain yang entah bagaimana menggabungkan baris dari tabel yang menarik data dari SQL dan tabel tempat saya memasukkan data secara manual. Bagaimana saya bisa mencapai ini? (Atau secara bergantian, apakah ada cara yang lebih baik untuk melakukan ini yang entah bagaimana aku rindukan?)
Contoh:
Table 1 (From Database):
| Person | Week Of | Task | Hours |
| Bob | 1/6/13 | Foo | 12 |
| Mary | 1/6/13 | Foo | 7 |
| Mary | 1/6/13 | Bar | 5 |
| John | 1/6/13 | Foo | 5 |
| John | 1/13/13 | Foo | 13 |
-
Table 2 (Entered Manually):
| Person | Week Of | Task | Hours |
| Bob | 1/6/13 | Baz | 3 |
| Mary | 1/6/13 | Baz | 2 |
| John | 1/13/13 | Baz | 5 |
-
Result:
| Person | Week Of | Task | Hours |
| Bob | 1/6/13 | Foo | 12 |
| Mary | 1/6/13 | Foo | 7 |
| Mary | 1/6/13 | Bar | 5 |
| John | 1/6/13 | Foo | 5 |
| John | 1/13/13 | Foo | 13 |
| Bob | 1/6/13 | Baz | 3 |
| Mary | 1/6/13 | Baz | 2 |
| John | 1/13/13 | Baz | 5 |
Jawaban:
Inilah solusi Excel murni tanpa VBA. Ia bekerja dengan menggunakan fungsi INDEX untuk mengecilkan baris dan melintasi kolom data SQL sampai nilai-nilai habis dan hasil kondisi kesalahan. Fungsi IFERROR menangkap kesalahan dan menggunakan fungsi INDEX kedua untuk mengecilkan baris dan melintasi kolom data yang dimasukkan secara manual, lagi sampai nilai-nilai tersebut habis dan kondisi kondisi kesalahan terjadi. Fungsi IFERROR kedua menangkap kesalahan dan mengembalikan tanda hubung ("-"). (Data SQL harus di-refresh melalui Ribbon agar formula menghasilkan hasil yang benar.)
Buat rentang dinamis bernama SQLDB untuk data SQL di Sheet1 menggunakan rumus:
Buat rentang dinamis kedua bernama EXCELRNG untuk data yang dimasukkan secara manual di Sheet2 menggunakan rumus:
Kedua rentang bernama ini menganggap bahwa nama variabel dimasukkan dalam baris 1 dari masing-masing dua lembar.
Masukkan nama variabel di baris 1 Sheet3 (dimulai pada sel A1).
Masukkan rumus berikut dalam sel A2 Sheet3:
Salin rumus di kolom nama variabel, dan kemudian ke bawah sampai hasil rumus semua tanda hubung ("-").
Mungkin sebagai langkah selanjutnya untuk membuat Pivot Table di lembar lain untuk analisis dan organisasi.
Sekali lagi langkah pertama adalah membuat rentang bernama dinamis, katakanlah, RESULTRNG, menyisipkan rumus berikut di kotak input Manajer Nama untuk rentang bernama:
Lalu buat Tabel Pivot di lembar baru, atur RESULTRNG sebagai tabel yang ingin Anda analisis. Ini akan memfilter setiap garis putus-putus dari tabel rumus di Sheet3.
Ini berfungsi karena rumus RESULTRNG menghitung jumlah total baris di Sheet1 dan Sheet2 (tidak termasuk header di Sheet2) dan jumlah total kolom di Sheet1, dan menetapkan luasnya berdasarkan jumlah itu, tidak termasuk tanda hubung di setiap baris tambahan ( atau kolom) dalam tabel rumus Sheet3.
sumber
Saya menemukan cara untuk melakukannya. Solusi ini sedikit rumit dan membutuhkan kedua tabel untuk memiliki lembar terpisah mereka sendiri (dengan tidak ada yang lain pada mereka), tetapi selain itu ia melakukan hampir persis apa yang saya inginkan. (Tampaknya juga ada banyak potensi di sini untuk melakukan operasi yang lebih kompleks seperti bergabung.)
Buka tab data pada pita, klik "Dari Sumber Lain", dan "Dari Microsoft Query". Kemudian klik File Excel, pilih file yang sedang Anda kerjakan dan klik oke. Lalu, tekan batal dan ketika dipromosikan apakah Anda ingin terus mengedit di Microsoft Query, tekan "Ya". Dari sini Anda dapat mengklik tombol SQL dan menulis Query SQL kustom pada setiap lembar dalam spreadsheet. Dalam kasus saya:
Catatan: Bagi saya, metode ini berhenti berfungsi setelah saya menutup file dan membukanya lagi. Saya tetap mempostingnya di sini, kalau-kalau itu hanya masalah dengan komputer saya atau orang lain bisa membuatnya berfungsi.
sumber
Jika Anda tertarik dengan solusi VBA, saya bisa membuat yang berikut ini berfungsi:
Tetapkan rentang bernama dinamis untuk data yang Anda tarik dari SQL Server. Buka Name Manager, masukkan nama baru, (katakanlah, "SQLDB") dan dan salin rumus berikut ini di kotak input referensi. Saya berasumsi bahwa data Anda yang ditarik ada di Sheet1:
Tetapkan rentang bernama lain untuk rentang di mana data manual dimasukkan. Saya menggunakan nama EXCELRNG dan menganggap itu di Sheet2. Rentang bernama dimulai pada baris 2 untuk mengecualikan baris header. Rumus di sini identik dengan yang pertama kecuali untuk lembar yang mengacu pada:
Berikut adalah set pertama pengaturan yang saya gunakan untuk koneksi ke tabel SQL. Kotak dialog diakses dengan memilih Koneksi di tab Data pada Pita. Menonaktifkan penyegaran latar belakang memastikan bahwa makro VBA berhenti hingga penyegaran data di lembar Excel selesai. Memiliki koneksi refresh ketika lembar kerja terbuka mungkin tidak diperlukan, tetapi saya ingin memastikan bahwa otentikasi akan dilakukan sebelum makro dijalankan.
Akhirnya, ini adalah kode VBA. Untuk memasukkannya, pilih Visual Basic di bawah tab Developer. Sorot nama lembar kerja dalam daftar di sebelah kiri. Ini akan dirujuk sebagai "VBA Project (nama lembar). Kemudian pilih Sisipkan Modul di bilah menu di bagian atas layar, dan rekatkan kode dalam modul baru. Perhatikan bahwa saya meletakkan tabel konsolidasi di Sheet3. Seperti yang tertulis, makro tidak mengurutkan tabel baru, meskipun itu tidak akan sulit untuk ditambahkan.
sumber
Berikut adalah versi solusi "Pure Excel" @ chuff yang dirancang khusus untuk bekerja dengan tabel. (IE Dua sumber data yang ingin Anda gabungkan adalah tabel.)
Perbedaan utama antara metode ini dan satu chuff yang diposting dalam jawabannya adalah bahwa Anda tidak perlu menentukan rentang bernama untuk dua set data yang Anda gabungkan, karena mereka adalah tabel dan sudah memiliki rentang nama mereka sendiri. Jadi lanjutkan dan beri nama tabel pertama Anda
Table1
, dan tabel kedua AndaTable2
.Sekarang, buat tabel baru di sudut kiri atas lembar baru dan berikan nama kolom yang sama dengan dua tabel lainnya. Lalu masukkan rumus berikut ini di sel A2 lembar yang baru saja Anda buat:
Selanjutnya, salin rumus ini di semua kolom tabel, dan kemudian ke bawah sampai hasil rumus semua tanda hubung ("-"). Catatan: Mengurutkan tabel baru ini tidak akan melakukan apa-apa, karena isi setiap sel sebenarnya identik (semuanya berisi rumus yang sama).
Jika kolom dalam tabel gabungan menampilkan 0 saat mereka seharusnya menampilkan sel kosong, Anda bisa membungkus rumus di kolom itu dengan fungsi pengganti, seperti ini:
Jika Anda ingin membuat tabel pivot yang menggunakan data dari tabel baru ini, Anda harus membuat rentang bernama. Pertama, beri nama tabel
Table3
. Sekarang, buka tab formula dan klik "Tentukan Nama". Beri nama pada referensi, masukkan persamaan berikut untuk nilainya ("Merujuk pada"):Anda kemudian dapat menggunakan referensi bernama ini sebagai rentang untuk Tabel Pivot Anda.
sumber
Jika Anda hanya menginginkan hasil satu kali saja, ada situs web yang akan menggabungkan dua tabel untuk Anda: https://office-tools.online/table/merge/
Anda menempelkan tabel ke halaman web dan memilih parameter yang relevan. Berikut screenshot dari contoh bawaan yang menunjukkan cara menggunakannya:
sumber