VLOOKUP merentas berbilang helaian dalam Excel dengan contoh

  • Berkongsi Ini
Michael Brown

Tutorial menunjukkan cara menggunakan fungsi VLOOKUP untuk menyalin data daripada lembaran kerja atau buku kerja lain, Vlookup dalam berbilang helaian dan mencari secara dinamik untuk mengembalikan nilai daripada helaian yang berbeza ke dalam sel yang berbeza.

Apabila mencari beberapa maklumat dalam Excel, ia adalah kes yang jarang berlaku apabila semua data berada pada helaian yang sama. Lebih kerap, anda perlu mencari merentas berbilang helaian atau buku kerja yang berbeza. Berita baiknya ialah Microsoft Excel menyediakan lebih daripada satu cara untuk melakukan ini, dan berita buruknya ialah semua cara itu sedikit lebih rumit daripada formula VLOOKUP standard. Tetapi dengan sedikit kesabaran, kami akan memikirkannya :)

    Cara VLOOKUP antara dua helaian

    Sebagai permulaan, mari kita siasat kes paling mudah - menggunakan VLOOKUP untuk salin data dari lembaran kerja lain. Ia sangat serupa dengan formula VLOOKUP biasa yang mencari pada lembaran kerja yang sama. Perbezaannya ialah anda memasukkan nama helaian dalam argumen table_array untuk memberitahu formula anda dalam lembaran kerja julat carian terletak.

    Formula generik untuk VLOOKUP daripada helaian lain adalah seperti berikut:

    VLOOKUP(lookup_value, Helaian!julat, col_index_num, [julat_lookup])

    Sebagai contoh, mari kita tarik angka jualan dari Jan laporan ke Ringkasan helaian. Untuk ini, kami mentakrifkan hujah berikut:

    • Lookup_values berada dalam lajur A pada helaian Ringkasan dan kamiVLOOKUP:

      VLOOKUP($A2, 'West'!$A$2:$C$6 , 2, FALSE)

      Akhir sekali, formula VLOOKUP yang sangat standard ini mencari nilai A2 dalam lajur pertama julat A2:C6 pada helaian Barat dan mengembalikan padankan dari lajur ke-2. Itu sahaja!

      VLOOKUP Dinamik untuk mengembalikan data daripada berbilang helaian ke dalam sel yang berbeza

      Mula-mula, mari kita tentukan maksud perkataan "dinamik" dalam konteks ini dan bagaimana formula ini akan menjadi berbeza daripada yang sebelumnya.

      Sekiranya anda mempunyai sebahagian besar data dalam format yang sama yang dibahagikan pada berbilang hamparan, anda mungkin mahu mengekstrak maklumat daripada helaian yang berbeza ke dalam sel yang berbeza. Imej di bawah menggambarkan konsep:

      Tidak seperti formula sebelumnya yang mendapatkan nilai daripada helaian tertentu berdasarkan pengecam unik, kali ini kami sedang mencari untuk mengekstrak nilai daripada beberapa helaian pada satu masa.

      Terdapat dua penyelesaian berbeza untuk tugasan ini. Dalam kedua-dua kes, anda perlu melakukan sedikit kerja persediaan dan mencipta julat bernama untuk sel data dalam setiap helaian carian. Untuk contoh ini, kami menentukan julat berikut:

      • Jualan_Timur - A2:B6 pada helaian Timur
      • Jualan_Utara - A2: B6 pada helaian Utara
      • South_Sales - A2:B6 pada helaian Selatan
      • West_Sales - A2:B6 pada helaian Barat

      VLOOKUP dan IF bersarang

      Jika anda mempunyai bilangan helaian yang munasabah untuk dicari, anda boleh menggunakan fungsi IF bersaranguntuk memilih helaian berdasarkan kata kunci dalam sel yang dipratentukan (sel B1 hingga D1 dalam kes kami).

      Dengan nilai carian dalam A2, formulanya adalah berikut:

      =VLOOKUP($A2, IF(B$1="east", East_Sales, IF(B$1="north", North_Sales, IF(B$1="south", South_Sales, IF(B$1="west", West_Sales)))), 2, FALSE)

      Diterjemahkan ke dalam bahasa Inggeris, bahagian IF berbunyi:

      Jika B1 ialah Timur , lihat dalam julat bernama East_Sales ; jika B1 ialah Utara , lihat dalam julat bernama Utara_Jualan ; jika B1 ialah Selatan , lihat dalam julat bernama South_Sales ; dan jika B1 ialah Barat , lihat dalam julat bernama West_Sales .

      Julat yang dikembalikan oleh IF pergi ke table_array VLOOKUP, yang menarik nilai padanan daripada lajur ke-2 pada helaian yang sepadan.

      Penggunaan bijak rujukan bercampur untuk nilai carian ($A2 - lajur mutlak dan baris relatif) dan ujian logik IF (B$1 - lajur relatif dan baris mutlak) membenarkan menyalin formula ke sel lain tanpa sebarang perubahan - Excel melaraskan rujukan secara automatik berdasarkan kedudukan relatif baris dan lajur.

      Jadi, kami memasukkan formula dalam B2, salin dengan betul dan turun kepada seberapa banyak lajur dan baris yang diperlukan dan dapatkan hasil berikut:

      VLOOKUP TIDAK LANGSUNG

      Apabila bekerja dengan banyak helaian, berbilang peringkat bersarang boleh membuat formula juga panjang dan sukar dibaca. Cara yang lebih baik ialah mencipta julat vlookup dinamik dengan bantuan INDIRECT:

      =VLOOKUP($A2, INDIRECT(B$1&"_Sales"), 2, FALSE)

      Di sini, kami menggabungkan rujukan kepada sel yang mengandungibahagian unik julat bernama (B1) dan bahagian biasa (_Jualan). Ini menghasilkan rentetan teks seperti "East_Sales", yang INDIRECT menukar kepada nama julat yang boleh difahami oleh Excel.

      Hasilnya, anda mendapat formula padat yang berfungsi dengan baik pada sebarang bilangan helaian:

      Begitulah cara untuk Vlookup antara helaian dan fail dalam Excel. Saya mengucapkan terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu hadapan!

      Berlatih buku kerja untuk muat turun

      Vlookup contoh helaian berbilang (fail.xlsx)

      rujuk kepada sel data pertama, iaitu A2.
    • Table_array ialah julat A2:B6 pada helaian Jan. Untuk merujuk kepadanya, awalan rujukan julat dengan nama helaian diikuti dengan tanda seru: Jan!$A$2:$B$6.

      Sila ambil perhatian bahawa kami mengunci julat dengan rujukan sel mutlak untuk mengelakkannya daripada berubah apabila menyalin formula ke sel lain.

      Col_index_num ialah 2 kerana kami ingin menyalin nilai daripada lajur B, yang merupakan lajur ke-2 dalam tatasusunan jadual.

    • Julat_lookup ditetapkan kepada FALSE untuk mencari padanan tepat.

    Menggabungkan argumen, kami mendapat formula ini:

    =VLOOKUP(A2, Jan!$A$2:$B$6, 2, FALSE)

    Seret formula ke bawah lajur dan anda akan mendapat hasil ini:

    Dalam dengan cara yang sama, anda boleh Vlookup data daripada helaian Feb dan Mac :

    =VLOOKUP(A2, Feb!$A$2:$B$6, 2, FALSE)

    =VLOOKUP(A2, Mar!$A$2:$B$6, 2, FALSE)

    Petua dan nota:

    • Jika nama helaian mengandungi ruang atau aksara bukan abjad , ia mesti disertakan dalam tanda petikan tunggal, seperti 'Jualan Jan'!$A$2:$B$6 . Untuk mendapatkan maklumat lanjut, sila lihat Cara merujuk helaian lain dalam Excel.
    • Daripada menaip nama helaian terus dalam formula, anda boleh bertukar kepada lembaran kerja carian dan memilih julat di sana. Excel akan memasukkan rujukan dengan sintaks yang betul secara automatik, mengelakkan masalah untuk menyemak nama dan menyelesaikan masalah.

    Vlookup dari buku kerja yang berbeza

    Ke VLOOKUP antara duabuku kerja, sertakan nama fail dalam kurungan segi empat sama, diikuti dengan nama helaian dan tanda seru.

    Sebagai contoh, untuk mencari nilai A2 dalam julat A2:B6 pada helaian Jan dalam buku kerja Sales_reports.xlsx , gunakan formula ini:

    =VLOOKUP(A2, [Sales_reports.xlsx]Jan!$A$2:$B$6, 2, FALSE)

    Untuk butiran penuh, sila lihat VLOOKUP daripada buku kerja lain dalam Excel.

    Vlookup merentas berbilang helaian dengan IFERROR

    Apabila anda perlu mencari antara lebih daripada dua helaian, penyelesaian paling mudah ialah menggunakan VLOOKUP dalam kombinasi dengan IFERROR. Ideanya ialah untuk menyusun beberapa fungsi IFERROR untuk menyemak berbilang lembaran kerja satu demi satu: jika VLOOKUP pertama tidak menemui padanan pada helaian pertama, cari dalam helaian seterusnya dan seterusnya.

    IFERROR(VLOOKUP(…), IFERROR(VLOOKUP(…), …, " Tidak dijumpai "))

    Untuk melihat cara pendekatan ini berfungsi pada data kehidupan sebenar, mari kita pertimbangkan contoh berikut. Di bawah ialah jadual Ringkasan yang ingin kami isikan dengan nama dan jumlah item dengan mencari nombor pesanan dalam helaian Barat dan Timur :

    Mula-mula, kita akan tarik item. Untuk ini, kami mengarahkan formula VLOOKUP untuk mencari nombor pesanan dalam A2 pada helaian Timur dan mengembalikan nilai dari lajur B (lajur ke-2 dalam tatasusunan_jadual A2:C6). Jika padanan tepat tidak ditemui, kemudian cari dalam helaian Barat . Jika kedua-dua Vlookup gagal, kembalikan "Tidak dijumpai".

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 2, FALSE), "Not found"))

    Untuk mengembalikan jumlah,cuma tukar nombor indeks lajur kepada 3:

    =IFERROR(VLOOKUP(A2, East!$A$2:$C$6, 3, FALSE), IFERROR(VLOOKUP(A2, West!$A$2:$C$6, 3, FALSE), "Not found"))

    Petua. Jika perlu, anda boleh menentukan tatasusunan jadual yang berbeza untuk fungsi VLOOKUP yang berbeza. Dalam contoh ini, kedua-dua helaian carian mempunyai bilangan baris yang sama (A2:C6), tetapi lembaran kerja anda mungkin berbeza dari segi saiz.

    Vlookup dalam berbilang buku kerja

    Untuk Vlookup antara dua atau lebih buku kerja, sertakan nama buku kerja dalam kurungan segi empat sama dan letakkannya sebelum nama helaian. Sebagai contoh, berikut ialah cara anda boleh Vlookup dalam dua fail berbeza ( Buku1 dan Buku2 ) dengan formula tunggal:

    =IFERROR(VLOOKUP(A2, [Book1.xlsx]East!$A$2:$C$6, 2, FALSE), IFERROR(VLOOKUP(A2, [Book2.xlsx]West!$A$2:$C$6, 2, FALSE),"Not found"))

    Jadikan nombor indeks lajur dinamik kepada Vlookup berbilang lajur

    Dalam situasi apabila anda perlu memulangkan data daripada beberapa lajur, menjadikan col_index_num dinamik boleh menjimatkan masa anda. Terdapat beberapa pelarasan yang perlu dibuat:

    • Untuk argumen col_index_num , gunakan fungsi COLUMNS yang mengembalikan bilangan lajur dalam tatasusunan yang ditentukan: COLUMNS($A$1 :B$1). (Koordinat baris tidak begitu penting, ia boleh menjadi mana-mana baris sahaja.)
    • Dalam hujah lookup_value , kunci rujukan lajur dengan tanda $ ($A2), supaya ia kekal tetap apabila menyalin formula ke lajur lain.

    Hasilnya, anda mendapat sejenis formula dinamik yang mengekstrak nilai yang sepadan daripada lajur yang berbeza, bergantung pada lajur mana formula disalin ke:

    =IFERROR(VLOOKUP($A2, East!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), IFERROR(VLOOKUP($A2, West!$A$2:$C$6, COLUMNS($A$1:B$1), FALSE), "Not found"))

    Apabila dimasukkan dalam lajur B, COLUMNS($A$1:B$1)menilai kepada 2 memberitahu VLOOKUP untuk mengembalikan nilai daripada lajur ke-2 dalam tatasusunan jadual.

    Apabila disalin ke lajur C (iaitu anda telah menyeret formula dari B2 ke C2), B$1 berubah kepada C$1 kerana rujukan lajur adalah relatif. Akibatnya, COLUMNS($A$1:C$1) menilai kepada 3 memaksa VLOOKUP untuk mengembalikan nilai daripada lajur ke-3.

    Formula ini berfungsi dengan baik untuk 2 - 3 helaian carian. Jika anda mempunyai lebih banyak, IFERROR yang berulang menjadi terlalu menyusahkan. Contoh seterusnya menunjukkan pendekatan yang sedikit lebih rumit tetapi lebih elegan.

    Vlookup berbilang helaian dengan INDIRECT

    Satu lagi cara untuk Vlookup antara berbilang helaian dalam Excel ialah menggunakan gabungan VLOOKUP dan fungsi TIDAK LANGSUNG. Kaedah ini memerlukan sedikit persediaan, tetapi pada akhirnya, anda akan mempunyai formula yang lebih padat untuk Vlookup dalam sebarang bilangan hamparan.

    Formula generik untuk Vlookup merentas helaian adalah seperti berikut:

    VLOOKUP( nilai_carian , INDIRECT("'"&INDEX( Helaian_carian , PADANAN(1, --(COUNTIF(TIDAK LANGSUNG("'" & Helaian_carian & " '! julat_carian "), nilai_carian )>0), 0)) & "'! tatasusunan_jadual "), bilangan_indeks_kol , FALSE)

    Di mana:

    • Lookup_sheets - julat bernama yang terdiri daripada nama helaian carian.
    • Lookup_value - the nilai untuk dicari.
    • Julat_carian - julat lajur dalam helaian carian tempat untuk mencari cariannilai.
    • Table_array - julat data dalam helaian carian.
    • Col_index_num - nombor lajur dalam tatasusunan jadual untuk kembalikan nilai.

    Untuk formula berfungsi dengan betul, sila ingat kaveat berikut:

    • Ia ialah formula tatasusunan, yang mesti dilengkapkan dengan menekan Ctrl + Shift + Enter kekunci bersama-sama.
    • Semua helaian mesti mempunyai urutan lajur yang sama .
    • Semasa kami menggunakan satu tatasusunan jadual untuk semua helaian carian, nyatakan julat terbesar jika helaian anda mempunyai bilangan baris yang berbeza.

    Cara menggunakan formula untuk Vlookup merentas helaian

    Untuk Vlookup berbilang helaian pada satu masa, laksanakan ini langkah:

    1. Tulis semua nama helaian carian di suatu tempat dalam buku kerja anda dan namakan julat itu ( Helaian_carian dalam kes kami).

  • Laraskan formula generik untuk data anda. Dalam contoh ini, kita akan:
    • mencari nilai A2 ( nilai_carian )
    • dalam julat A2:A6 ( julat_carian ) dalam empat lembaran kerja ( Timur , Utara , Selatan dan Barat ), dan
    • tarik nilai padanan daripada lajur B, iaitu lajur 2 ( col_index_num ) dalam julat data A2:C6 ( table_array ).

    Dengan hujah di atas, formula mengambil bentuk ini:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)

    Sila ambil perhatian bahawa kami mengunci kedua-dua julat ($A$2:$A$6 dan $A$2:$C$6) dengan rujukan sel mutlak.

  • Masukkan formuladalam sel paling atas (B2 dalam contoh ini) dan tekan Ctrl + Shift + Enter untuk melengkapkannya.
  • Klik dua kali atau seret pemegang isian untuk menyalin formula ke bawah lajur.
  • Sebagai Hasilnya, kami mempunyai formula untuk mencari nombor pesanan dalam 4 helaian dan mendapatkan semula item yang sepadan. Jika nombor pesanan tertentu tidak ditemui, ralat #N/A dipaparkan seperti dalam baris 14:

    Untuk mengembalikan jumlah, cuma gantikan 2 dengan 3 dalam col_index_num hujah kerana amaun berada dalam lajur ke-3 tatasusunan jadual:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE)

    Jika anda ingin menggantikan tatatanda ralat #N/A standard dengan teks anda sendiri, bungkus formula ke dalam fungsi IFNA:

    =IFNA(VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 3, FALSE), "Not found")

    Vlookup berbilang helaian antara buku kerja

    Formula generik ini (atau sebarang variasinya) juga boleh digunakan untuk Vlookup berbilang helaian dalam buku kerja yang berbeza . Untuk ini, gabungkan nama buku kerja di dalam INDIRECT seperti ditunjukkan dalam formula di bawah:

    =IFNA(VLOOKUP($A2, INDIRECT("'[Book1.xlsx]" & INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'[Book1.xlsx]" & Lookup_sheets & "'!$A$2:$A$6"), $A2)>0), 0)) & "'!$A$2:$C$6"), 2, FALSE), "Not found")

    Vlookup antara helaian dan kembalikan berbilang lajur

    Jika anda ingin menarik data daripada beberapa lajur, formula tatasusunan berbilang sel boleh melakukannya sekali gus. Untuk mencipta formula sedemikian, berikan pemalar tatasusunan untuk argumen col_index_num .

    Dalam contoh ini, kami ingin mengembalikan nama item (lajur B) dan amaun (lajur C), yang ialah lajur ke-2 dan ke-3 dalam tatasusunan jadual, masing-masing. Jadi, tatasusunan yang diperlukan ialah{2,3}.

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets &"'!$A$2:$C$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), {2,3}, FALSE)

    Untuk memasukkan formula dengan betul dalam berbilang sel, ini yang anda perlu lakukan:

    • Dalam baris pertama, pilih semua sel untuk diisi (B2:C2 dalam contoh kami).
    • Taip formula dan tekan Ctrl + Shift + Enter . Ini memasukkan formula yang sama dalam sel yang dipilih, yang akan mengembalikan nilai yang berbeza dalam setiap lajur.
    • Seret formula ke bawah ke baris yang tinggal.

    Cara formula ini berfungsi

    Untuk lebih memahami logiknya, mari kita pecahkan formula asas ini kepada fungsi individu:

    =VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, --(COUNTIF(INDIRECT("'"& Lookup_sheets&"'!$A$2:$A$6"), $A2)>0), 0)) &"'!$A$2:$C$6"), 2, FALSE)

    Berusaha dari dalam ke luar, inilah yang dilakukan oleh formula:

    COUNTIF dan TIDAK LANGSUNG

    Ringkasnya, INDIRECT membina rujukan untuk semua helaian carian dan COUNTIF mengira kejadian carian nilai (A2) dalam setiap helaian:

    --(COUNTIF( INDIRECT("'"&Lookup_sheets&"'!$A$2:$A$6"), $A2)>0)

    Dengan lebih terperinci:

    Mula-mula, anda menggabungkan nama julat (Lookup_sheets) dan rujukan julat ($A$2: $A$6), menambah apostrof dan tanda seru di tempat yang betul untuk membuat rujukan luaran dan suapkan rentetan teks yang terhasil ke fungsi INDIRECT untuk merujuk secara dinamik pada helaian carian:

    INDIRECT({"'East'!$A$2:$A$6"; "'South'!$A$2:$A$6"; "'North'!$A$2:$A$6"; "'West'!$A$2:$A$6"})

    COUNTIF menyemak setiap sel dalam julat A2:A6 pada setiap helaian carian berbanding nilai dalam A2 pada halaman utama helaian dan mengembalikan kiraan padanan bagi setiap helaian. Dalam set data kami, nombor pesanan dalam A2 (101) ditemui dalam helaian Barat , iaitu ke-4 dalamjulat dinamakan, jadi COUNTIF mengembalikan tatasusunan ini:

    {0;0;0;1}

    Seterusnya, anda membandingkan setiap elemen tatasusunan di atas dengan 0:

    --({0; 0; 0; 1}>0)

    Ini menghasilkan tatasusunan nilai TRUE (lebih daripada 0) dan FALSE (sama dengan 0), yang anda paksa kepada 1 dan 0 dengan menggunakan unary berganda (--), dan dapatkan tatasusunan berikut sebagai hasilnya:

    {0; 0; 0; 1}

    Operasi ini adalah langkah berjaga-jaga tambahan untuk mengendalikan situasi apabila helaian carian mengandungi beberapa kejadian nilai carian, dalam hal ini COUNTIF akan mengembalikan kiraan yang lebih besar daripada 1, manakala kami mahu hanya 1 dan 0 dalam tatasusunan akhir (sebentar lagi, anda akan faham sebabnya).

    Selepas semua transformasi ini, formula kami kelihatan seperti berikut:

    VLOOKUP($A2, INDIRECT("'"&INDEX(Lookup_sheets, MATCH(1, {0;0;0;1} , 0)) &"'!$A$2:$C$6"), 2, FALSE)

    INDEX dan PADANAN

    Pada ketika ini, gabungan INDEX MATCH klasik melangkah dalam:

    INDEX(Lookup_sheets, MATCH(1, {0;0;0;1}, 0))

    Fungsi MATCH yang dikonfigurasikan untuk padanan tepat (0 dalam argumen terakhir) mencari nilai 1 dalam tatasusunan { 0;0;0;1} dan mengembalikan kedudukannya, iaitu 4:

    INDEX(Lookup_sheets, 4)

    Fungsi INDEX menggunakan nombor yang dikembalikan oleh MATCH sebagai argumen nombor baris (row_num), dan mengembalikan nilai ke-4 dalam julat bernama Lookup_sheets , iaitu Barat .

    Jadi, formula mengurangkan lagi kepada:

    VLOOKUP($A2, INDIRECT("'"&" West "&"'!$A$2:$C$6"), 2, FALSE)

    VLOOKUP dan TIDAK LANGSUNG

    Fungsi INDIRECT memproses rentetan teks di dalamnya:

    INDIRECT("'"&"West"&"'!$A$2:$C$6")

    Dan menukarnya ke dalam rujukan yang pergi ke argumen table_array

    Michael Brown ialah peminat teknologi yang berdedikasi dengan semangat untuk memudahkan proses kompleks menggunakan alat perisian. Dengan lebih sedekad pengalaman dalam industri teknologi, beliau telah mengasah kemahirannya dalam Microsoft Excel dan Outlook, serta Helaian Google dan Dokumen. Blog Michael berdedikasi untuk berkongsi pengetahuan dan kepakarannya dengan orang lain, menyediakan petua dan tutorial yang mudah diikuti untuk meningkatkan produktiviti dan kecekapan. Sama ada anda seorang profesional berpengalaman atau pemula, blog Michael menawarkan pandangan berharga dan nasihat praktikal untuk memanfaatkan sepenuhnya alatan perisian penting ini.