Fungsi Excel FILTER - penapisan dinamik dengan formula

  • Berkongsi Ini
Michael Brown

Dalam pelajaran ringkas ini, anda akan belajar cara menapis dalam Excel secara dinamik dengan formula. Contoh untuk menapis pendua, sel yang mengandungi teks tertentu, dengan berbilang kriteria dan banyak lagi.

Bagaimanakah anda biasanya menapis dalam Excel? Untuk sebahagian besar, dengan menggunakan Penapis Auto, dan dalam senario yang lebih kompleks dengan Penapis Lanjutan. Oleh kerana pantas dan berkuasa, kaedah ini mempunyai satu kelemahan yang ketara - ia tidak dikemas kini secara automatik apabila data anda berubah, bermakna anda perlu membersihkan dan menapis semula. Pengenalan fungsi FILTER dalam Excel 365 menjadi alternatif yang ditunggu-tunggu kepada ciri konvensional. Tidak seperti mereka, formula Excel mengira semula secara automatik dengan setiap perubahan lembaran kerja, jadi anda perlu menyediakan penapis anda sekali sahaja!

    Fungsi Excel FILTER

    Fungsi FILTER dalam Excel digunakan untuk menapis julat data berdasarkan kriteria yang anda tentukan.

    Fungsi ini tergolong dalam kategori fungsi Tatasusunan Dinamik. Hasilnya ialah tatasusunan nilai yang tumpah secara automatik ke dalam julat sel, bermula dari sel tempat anda memasukkan formula.

    Sintaks fungsi FILTER adalah seperti berikut:

    FILTER(array, include , [if_empty])

    Di mana:

    • Array (diperlukan) - julat atau tatasusunan nilai yang anda mahu tapis.
    • Sertakan (diperlukan) - kriteria yang dibekalkan sebagai tatasusunan Boolean (nilai BENAR dan FALSE).

      Iawalaupun ratusan lajur, anda pastinya ingin mengehadkan hasil kepada beberapa lajur yang paling penting.

      Contoh 1. Tapis beberapa lajur bersebelahan

      Dalam situasi apabila anda mahu beberapa lajur bersebelahan muncul dalam hasil FILTER, masukkan hanya lajur tersebut dalam tatasusunan kerana hujah inilah yang menentukan lajur yang akan dikembalikan.

      Dalam contoh formula FILTER asas, andaikan anda ingin mengembalikan 2 lajur pertama ( Nama dan Kumpulan ). Jadi, anda membekalkan A2:B13 untuk hujah array :

      =FILTER(A2:B13, B2:B13=F1, "No results")

      Hasilnya, kami mendapat senarai peserta kumpulan sasaran yang ditakrifkan dalam F1:

      Contoh 2. Tapis lajur bukan bersebelahan

      Untuk menyebabkan fungsi FILTER mengembalikan lajur bukan bersebelahan, gunakan helah pintar ini:

      1. Buat formula FILTER dengan keadaan yang diingini menggunakan keseluruhan jadual untuk array .
      2. Sarang formula di atas di dalam fungsi FILTER yang lain. Untuk mengkonfigurasi fungsi "pembungkus", gunakan pemalar tatasusunan nilai TRUE dan FALSE atau 1 dan 0 untuk hujah include , dengan TRUE (1) menandakan lajur untuk disimpan dan FALSE (0) menandakan lajur untuk dikecualikan.

      Sebagai contoh, untuk mengembalikan hanya Nama (lajur pertama) dan Kemenangan (lajur ke-3), kami menggunakan {1, 0,1} atau {TRUE,FALSE,TRUE} untuk argumen include fungsi FILTER luar:

      =FILTER(FILTER(A2:C13, B2:B13=F1), {1,0,1})

      Atau

      =FILTER(FILTER(A2:C13, B2:B13=F1), {TRUE,FALSE,TRUE})

      Cara mengehadkanbilangan baris yang dikembalikan oleh fungsi FILTER

      Jika formula FILTER anda menemui banyak hasil, tetapi lembaran kerja anda mempunyai ruang terhad dan anda tidak boleh memadamkan data di bawah, maka anda boleh mengehadkan bilangan baris yang dikembalikan oleh fungsi FILTER .

      Mari kita lihat cara ia berfungsi pada contoh formula ringkas yang menarik pemain daripada kumpulan sasaran dalam F1:

      =FILTER(A2:C13, B2:B13=F1)

      Formula di atas mengeluarkan semua rekod yang ia mendapati, 4 baris dalam kes kami. Tetapi katakan anda hanya mempunyai ruang untuk dua orang. Untuk mengeluarkan hanya 2 baris pertama yang ditemui, ini yang anda perlu lakukan:

      • Palamkan formula FILTER ke dalam argumen array bagi fungsi INDEX.
      • Untuk argumen row_num INDEX, gunakan pemalar tatasusunan menegak seperti {1;2}. Ia menentukan bilangan baris untuk dikembalikan (2 dalam kes kami).
      • Untuk argumen column_num , gunakan pemalar tatasusunan mendatar seperti {1,2,3}. Ia menentukan lajur yang hendak dikembalikan (3 lajur pertama dalam contoh ini).
      • Untuk menjaga kemungkinan ralat apabila tiada data yang sepadan dengan kriteria anda ditemui, anda boleh membungkus formula anda dalam fungsi IFERROR.

    Formula lengkap mengambil bentuk ini:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), {1;2}, {1,2,3}), "No result")

    Apabila bekerja dengan jadual besar, menulis pemalar tatasusunan secara manual mungkin agak menyusahkan. Tiada masalah, fungsi SEQUENCE boleh menjana nombor jujukan untuk anda secara automatik:

    =IFERROR(INDEX(FILTER(A2:C13, B2:B13=F1), SEQUENCE(2), SEQUENCE(1, COLUMNS(A2:C13))), "No result")

    JURUSAN pertama menjana tatasusunan menegakmengandungi seberapa banyak nombor berjujukan seperti yang dinyatakan dalam hujah pertama (dan sahaja). SEQUENCE kedua menggunakan fungsi COLUMNS untuk mengira bilangan lajur dalam set data dan menghasilkan tatasusunan mendatar yang setara.

    Petua. Untuk mengembalikan data daripada lajur khusus , bukan semua lajur, dalam pemalar tatasusunan mendatar yang anda gunakan untuk argumen column_num INDEX, masukkan hanya nombor khusus tersebut. Sebagai contoh, untuk mengekstrak data daripada lajur pertama dan ke-3, gunakan {1,3}.

    Fungsi Excel FILTER tidak berfungsi

    Dalam situasi apabila formula Excel FILTER anda menghasilkan ralat, kemungkinan besar ia akan menjadi salah satu daripada yang berikut:

    #CALC! ralat

    Berlaku jika argumen if_empty pilihan ditinggalkan dan tiada hasil yang memenuhi kriteria ditemui. Sebabnya ialah pada masa ini Excel tidak menyokong tatasusunan kosong. Untuk mengelakkan ralat sedemikian, pastikan anda sentiasa mentakrifkan nilai if_empty dalam formula anda.

    #VALUE ralat

    Berlaku apabila array dan include argumen mempunyai dimensi yang tidak serasi.

    #N/A, #VALUE, dll.

    Ralat yang berbeza mungkin berlaku jika beberapa nilai dalam include argumen ialah ralat atau tidak boleh ditukar kepada nilai Boolean.

    Ralat #NAME

    Berlaku apabila cuba menggunakan FILTER dalam versi Excel yang lebih lama. Sila ingat bahawa ia adalah fungsi baharu, yang hanya tersedia dalam Office 365 dan Excel 2021.

    DalamExcel baharu, ralat #NAME berlaku jika anda tersalah eja nama fungsi secara tidak sengaja.

    Ralat #SPILL

    Lazimnya, ralat ini berlaku jika satu atau lebih sel dalam julat tumpahan tidak kosong sepenuhnya . Untuk membetulkannya, hanya kosongkan atau padamkan sel yang tidak kosong. Untuk menyiasat dan menyelesaikan kes lain, sila lihat #SPILL! ralat dalam Excel: maksudnya dan cara membetulkannya.

    #REF! ralat

    Berlaku apabila formula FILTER digunakan antara buku kerja yang berbeza dan buku kerja sumber ditutup.

    Begitulah cara memfailkan data dalam Excel secara dinamik. Saya berterima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu hadapan!

    Muat turun buku kerja latihan

    Tapis dalam Excel dengan formula (fail.xlsx)

    ketinggian (apabila data dalam lajur) atau lebar (apabila data dalam baris) mestilah sama dengan argumen array .
  • If_empty (pilihan) - nilai untuk dikembalikan apabila tiada entri memenuhi kriteria.
  • Fungsi FILTER hanya tersedia dalam Excel untuk Microsoft 365 dan Excel 2021. Dalam Excel 2019, Excel 2016 dan versi terdahulu, ia tidak disokong.

    Formula Asas PENAPIS Excel

    Sebagai permulaan, mari kita bincangkan beberapa kes yang sangat mudah hanya untuk mendapatkan lebih memahami cara formula Excel untuk menapis data berfungsi.

    Daripada set data di bawah, andaikan anda ingin mengekstrak rekod dengan nilai tertentu dalam lajur Kumpulan , katakan kumpulan C. Untuk melakukannya, kami membekalkan ungkapan B2:B13="C" kepada argumen include , yang akan menghasilkan tatasusunan Boolean yang diperlukan, dengan TRUE sepadan dengan nilai "C".

    =FILTER(A2:C13, B2:B13="C", "No results")

    Dalam amalan, adalah lebih mudah untuk memasukkan kriteria dalam sel yang berasingan, mis. F1 dan gunakan rujukan sel dan bukannya pengekodan keras nilai terus dalam formula:

    =FILTER(A2:C13, B2:B13=F1, "No results")

    Tidak seperti ciri Penapis Excel, fungsi ini tidak membuat sebarang perubahan pada data asal. Ia mengekstrak rekod yang ditapis ke dalam julat tumpahan yang dipanggil (E4:G7 dalam tangkapan skrin di bawah), bermula dalam sel tempat formula dimasukkan:

    Jika tiada rekod sepadan dengan kriteria yang ditentukan, formula mengembalikan nilai yang anda masukkan ke dalamargumen if_empty , "Tiada hasil" dalam contoh ini:

    Jika anda lebih suka tidak mengembalikan apa-apa dalam kes ini, maka bekalkan rentetan kosong ("") untuk hujah terakhir:

    =FILTER(A2:C13, B2:B13=F1, "")

    Sekiranya data anda disusun mendatar dari kiri ke kanan seperti yang ditunjukkan dalam tangkapan skrin di bawah, fungsi FILTER juga akan berfungsi dengan baik. Cuma pastikan anda mentakrifkan julat yang sesuai untuk argumen array dan include , supaya tatasusunan sumber dan tatasusunan Boolean mempunyai lebar yang sama:

    =FILTER(B2:M4, B3:M3= B7, "No results")

    Fungsi PENAPIS Excel - nota penggunaan

    Untuk menapis dengan berkesan dalam Excel dengan formula, berikut ialah beberapa perkara penting yang perlu diberi perhatian:

    • Fungsi FILTER secara automatik menumpahkan hasil secara menegak atau mendatar dalam lembaran kerja, bergantung pada cara data asal anda disusun. Jadi, sila pastikan anda sentiasa mempunyai sel kosong yang mencukupi di bawah dan ke kanan, jika tidak, anda akan mendapat ralat #SPILL.
    • Hasil fungsi Excel FILTER adalah dinamik, bermakna ia dikemas kini secara automatik apabila nilai masuk perubahan set data asal. Walau bagaimanapun, julat yang dibekalkan untuk argumen array tidak dikemas kini apabila entri baharu ditambahkan pada data sumber. Jika anda ingin tatasusunan mengubah saiz secara automatik, kemudian tukarkannya kepada jadual Excel dan bina formula dengan rujukan berstruktur atau buat julat bernama dinamik.

    Cara menapis dalam Excel -contoh formula

    Sekarang anda tahu cara formula penapis Excel asas berfungsi, tiba masanya untuk mendapatkan beberapa cerapan tentang cara ia boleh dilanjutkan untuk menyelesaikan tugas yang lebih kompleks.

    Tapis dengan berbilang kriteria (DAN logik)

    Untuk menapis data dengan berbilang kriteria, anda membekalkan dua atau lebih ungkapan logik untuk argumen include :

    FILTER(array, ( range1= kriteria1) * ( julat2= kriteria2), "Tiada hasil")

    Operasi pendaraban memproses tatasusunan dengan DAN logik , memastikan bahawa hanya rekod yang memenuhi semua kriteria dikembalikan. Secara teknikal, ia berfungsi dengan cara ini:

    Hasil setiap ungkapan logik ialah tatasusunan nilai Boolean, dengan TRUE bersamaan dengan 1 dan FALSE kepada 0. Kemudian, unsur-unsur semua tatasusunan dalam kedudukan yang sama didarabkan . Memandangkan pendaraban dengan sifar sentiasa memberikan sifar, hanya item yang semua kriterianya BENAR sahaja masuk ke dalam tatasusunan yang terhasil, dan akibatnya hanya item tersebut yang diekstrak.

    Contoh di bawah menunjukkan formula generik ini dalam tindakan.

    Contoh 1. Tapis berbilang lajur dalam Excel

    Memperluas formula asas Excel FILTER kami sedikit lagi, mari kita menapis data mengikut dua lajur: Kumpulan (lajur B) dan Menang (lajur C).

    Untuk ini, kami menyediakan kriteria berikut: taip nama kumpulan sasaran dalam F2 ( kriteria1 ) dan bilangan minimum yang diperlukanmenang dalam F3 ( kriteria2 ).

    Memandangkan data sumber kami berada dalam A2:C13 ( tatasusunan ), kumpulan berada dalam B2:B13 ( julat1 ) dan kemenangan adalah dalam C2:C13 ( julat2 ), formula mengambil bentuk ini:

    =FILTER(A2:C13, (B2:B13=F2) * (C2:C13>=F3), "No results")

    Hasilnya, anda mendapat senarai pemain dalam kumpulan A yang telah memperoleh 2 atau lebih kemenangan:

    Contoh 2. Tapis data antara tarikh

    Mula-mula, perlu diingatkan bahawa ia tidak mungkin untuk membentuk formula generik untuk menapis mengikut tarikh dalam Excel. Dalam situasi yang berbeza, anda perlu membina kriteria secara berbeza, bergantung pada sama ada anda ingin menapis mengikut tarikh tertentu, mengikut bulan atau mengikut tahun. Tujuan contoh ini adalah untuk menunjukkan pendekatan umum.

    Kepada data sampel kami, kami menambah satu lagi lajur yang mengandungi tarikh kemenangan terakhir (lajur D). Dan sekarang, kami akan mengeluarkan kemenangan yang berlaku dalam tempoh tertentu, katakan antara 17 Mei dan 31 Mei.

    Sila ambil perhatian bahawa dalam kes ini, kedua-dua kriteria digunakan pada julat yang sama:

    =FILTER(A2:D13, (D2:D13>=G2) * (D2:D13<=G3), "No results")

    Di mana G2 dan G3 ialah tarikh untuk ditapis antara.

    Tapis dengan berbilang kriteria (ATAU logik)

    Untuk mengekstrak data berdasarkan berbilang keadaan ATAU, anda juga menggunakan ungkapan logik seperti yang ditunjukkan dalam contoh sebelumnya, tetapi bukannya mendarab, anda menambahnya. Apabila tatasusunan Boolean yang dikembalikan oleh ungkapan dijumlahkan, tatasusunan yang terhasil akan mempunyai 0 untuk entri yang tidak memenuhi sebarang kriteria (iaitu semuakriteria adalah SALAH), dan entri tersebut akan ditapis keluar. Entri yang mempunyai sekurang-kurangnya satu kriteria BENAR akan diekstrak.

    Berikut ialah formula generik untuk menapis lajur dengan logik OR:

    FILTER(array, ( julat1= kriteria1) + ( julat2= kriteria2), "Tiada hasil")

    Sebagai contoh, mari keluarkan senarai pemain yang mempunyai ini atau bahawa bilangan kemenangan.

    Dengan mengandaikan data sumber adalah dalam A2:C13, kemenangan adalah dalam C2:C13 dan nombor kemenangan yang diminati adalah dalam F2 dan F3, formulanya adalah seperti berikut:

    =FILTER(A2:C13, (C2:C13=F2) + (C2:C13=F3), "No results")

    Hasilnya, anda tahu pemain mana yang telah memenangi semua permainan (4) dan yang tidak memenangi satu pun (0):

    Tapis berdasarkan berbilang DAN serta kriteria ATAU

    Dalam situasi apabila anda perlu menggunakan kedua-dua jenis kriteria, ingat peraturan mudah ini: sertai kriteria AND dengan asterisk (*) dan kriteria ATAU dengan tambah tanda (+).

    Sebagai contoh, untuk mengembalikan senarai pemain yang mempunyai bilangan kemenangan tertentu (F2) DAN tergolong dalam kumpulan yang disebut dalam E2 ATAU E3, bina rantaian logik berikut ungkapan:

    =FILTER(A2:C13, (C2:C13=F2) * ((B2:B13=E2) + (B2:B13=E3)), "No results")

    Dan anda akan mendapat hasil berikut:

    Cara menapis pendua dalam Excel

    Apabila bekerja dengan lembaran kerja yang besar atau menggabungkan data daripada sumber yang berbeza, selalunya terdapat kemungkinan beberapa pendua akan menyelinap masuk.

    Jika anda ingin menapis keluar pendua dan ekstrakitem unik, kemudian gunakan fungsi UNIK seperti yang dijelaskan dalam tutorial terpaut di atas.

    Jika matlamat anda adalah untuk menapis pendua , iaitu mengekstrak entri yang berlaku lebih daripada sekali, kemudian gunakan fungsi FILTER bersama-sama dengan COUNTIFS.

    Ideanya ialah untuk mendapatkan kiraan kejadian untuk semua rekod dan mengekstrak yang lebih daripada 1. Untuk mendapatkan kiraan, anda membekalkan julat yang sama untuk setiap julat_kriteria / kriteria pasangan COUNTIFS seperti ini:

    FILTER( array, COUNTIFS( column1, column1, column2, lajur2)>1, "Tiada hasil")

    Contohnya, untuk menapis baris pendua daripada data dalam A2:C20 berdasarkan nilai dalam kesemua 3 lajur, berikut ialah formula untuk digunakan:

    =FILTER(A2:C20, COUNTIFS(A2:A20, A2:A20, B2:B20, B2:B20, C2:C20, C2:C20)>1, "No results")

    Petua. Untuk menapis pendua berdasarkan nilai dalam lajur utama , masukkan hanya lajur khusus tersebut dalam fungsi COUNTIFS.

    Cara menapis kekosongan dalam Excel

    Formula untuk menapis sel kosong sebenarnya ialah variasi formula Excel FILTER dengan berbilang kriteria DAN. Dalam kes ini, kami menyemak sama ada semua (atau tertentu) lajur mempunyai sebarang data di dalamnya dan mengecualikan baris di mana sekurang-kurangnya satu sel kosong. Untuk mengenal pasti sel bukan kosong, anda menggunakan operator "tidak sama dengan" () bersama-sama dengan rentetan kosong ("") seperti ini:

    FILTER(array, ( column1 "") * ( lajur2 =""), "Tiada hasil")

    Dengan data sumber dalam A2:C12, untuk menapis barismengandungi satu atau lebih sel kosong, formula berikut dimasukkan dalam E3:

    Tapis sel yang mengandungi teks tertentu

    Untuk mengekstrak sel yang mengandungi teks tertentu, anda boleh menggunakan fungsi FILTER bersama-sama dengan sel If klasik mengandungi formula:

    FILTER(array, ISNUMBER(SEARCH(" text ", julat )), "No results")

    Begini caranya:

    • Fungsi SEARCH mencari rentetan teks yang ditentukan dalam julat tertentu dan mengembalikan sama ada nombor (kedudukan aksara pertama) atau #VALUE! ralat (teks tidak ditemui).
    • Fungsi ISNUMBER menukar semua nombor kepada TRUE dan ralat kepada FALSE dan menghantar tatasusunan Boolean yang terhasil kepada argumen include bagi fungsi FILTER.

    Untuk contoh ini, kami telah menambahkan Nama akhir pemain dalam B2:B13, menaip bahagian nama yang ingin kami cari dalam G2, dan kemudian gunakan formula berikut untuk tapis data:

    =FILTER(A2:D13, ISNUMBER(SEARCH(G2, B2:B13)), "No results")

    Hasilnya, formula mendapatkan semula dua nama keluarga yang mengandungi "han":

    Tapis dan kira (Jumlah, Purata, Min, Maks, dll.)

    Sesuatu yang menarik tentang fungsi Excel FILTER ialah ia bukan sahaja boleh mengekstrak nilai dengan syarat, tetapi juga meringkaskan data yang ditapis. Untuk ini, gabungkan FILTER dengan fungsi pengagregatan seperti SUM, AVERAGE, COUNT, MAX atau MIN.

    Sebagai contoh, untuk mengagregat data bagi kumpulan tertentu dalam F1, gunakan yang berikutformula:

    Jumlah kemenangan:

    =SUM(FILTER(C2:C13, B2:B13=F1, 0))

    Purata kemenangan:

    =AVERAGE(FILTER(C2:C13, B2:B13=F1, 0))

    Kemenangan maksimum:

    =MAX(FILTER(C2:C13, B2:B13=F1, 0))

    Kemenangan minimum:

    =MIN(FILTER(C2:C13, B2:B13=F1, 0))

    Sila ambil perhatian bahawa, dalam semua formula, kami menggunakan sifar untuk argumen if_empty , jadi formula akan kembalikan 0 jika tiada nilai yang memenuhi kriteria ditemui. Membekalkan sebarang teks seperti "Tiada hasil" akan mengakibatkan ralat #VALUE, yang jelas merupakan perkara terakhir yang anda mahukan :)

    Formula PENAPIS sensitif huruf besar-besaran

    Formula Excel FILTER standard adalah tidak peka huruf besar-besaran, bermakna ia tidak membezakan antara aksara huruf kecil dan huruf besar. Untuk membezakan huruf besar kecil, sarangkan fungsi EXACT dalam argumen include . Ini akan memaksa FILTER untuk melakukan ujian logik dalam cara sensitif huruf besar-kecil:

    FILTER(array, EXACT( julat , kriteria ), "Tiada keputusan")

    Andaikan , anda mempunyai kedua-dua kumpulan A dan a dan ingin mengekstrak rekod dengan kumpulan itu ialah huruf kecil "a". Untuk melakukannya, gunakan formula berikut, dengan A2:C13 ialah data sumber dan B2:B13 ialah kumpulan untuk ditapis:

    =FILTER(A2:C13, EXACT(B2:B13, "a"), "No results")

    Seperti biasa, anda boleh memasukkan kumpulan sasaran dalam sel yang dipratentukan, sebut F1 dan gunakan rujukan sel itu dan bukannya teks berkod keras:

    =FILTER(A2:C13, EXACT(B2:B13, F1), "No results")

    Cara MENAPIS data dan hanya mengembalikan lajur tertentu

    Sebahagian besarnya, menapis semua lajur dengan formula tunggal ialah perkara yang pengguna Excel mahukan. Tetapi jika jadual sumber anda mengandungi puluhan atau

    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.