Penyataan Excel IF untuk padanan teks separa (wildcard)

  • Berkongsi Ini
Michael Brown

Cuba membina pernyataan IF dengan teks kad bebas, tetapi ia gagal setiap kali? Masalahnya bukan dalam formula anda tetapi dalam fungsi itu sendiri - Excel IF tidak menyokong aksara kad bebas. Walau bagaimanapun, terdapat cara untuk menjadikannya berfungsi untuk padanan teks separa dan tutorial ini akan mengajar anda caranya.

Setiap kali anda ingin melakukan padanan separa atau kabur dalam Excel, penyelesaian yang paling jelas ialah untuk menggunakan kad bebas. Tetapi bagaimana jika fungsi tertentu yang anda perlu gunakan tidak menyokong aksara kad bebas? Malangnya, Excel IF adalah salah satu daripada fungsi sedemikian. Ini amat mengecewakan memandangkan fungsi "bersyarat" lain seperti COUNTIF, SUMIF dan AVERAGEIFS berfungsi dengan kad bebas dengan sempurna.

Nasib baik, bukan halangan yang boleh menghalang pengguna Excel yang kreatif :) Dengan menggabungkan IF dengan fungsi lain, anda boleh memaksanya untuk menilai padanan separa dan mendapatkan alternatif yang bagus kepada formula kad bebas Excel IF.

    Mengapa fungsi Excel IF dengan kad bebas tidak berfungsi

    Dalam jadual contoh di bawah, andaikan anda ingin menyemak sama ada ID dalam lajur pertama mengandungi huruf "A". Jika ditemui - paparkan "Ya" dalam lajur B, jika tidak - paparkan "Tidak".

    Nampaknya menyertakan teks kad bebas dalam ujian logik adalah penyelesaian yang mudah:

    =IF(A2="*a*","Yes", "No")

    Tetapi sayangnya ia tidak berkesan. Formula mengembalikan "Tidak" untuk semua sel, malah yang mengandungi "A":

    Mengapakad bebas penyataan JIKA gagal? Dari semua penampilan, Excel tidak mengenali kad bebas yang digunakan dengan tanda yang sama atau pengendali logik lain. Melihat lebih dekat pada senarai fungsi yang menyokong kad bebas, anda akan melihat bahawa sintaksnya menganggap teks kad bebas untuk muncul terus dalam hujah seperti ini:

    =COUNTIF(A2:A10, "*a*")

    Excel JIKA mengandungi teks separa

    Sekarang anda tahu sebab formula JIKA kad bebas gagal, mari cuba cari cara untuk menjadikannya berfungsi. Untuk ini, kami hanya akan membenamkan fungsi yang menerima kad bebas dalam ujian logik IF, iaitu fungsi COUNTIF:

    IF(COUNTIF( sel, "* text* "), value_if_true, value_if_false)

    Dengan pendekatan ini, IF tidak mempunyai masalah untuk memahami kad bebas dan mengenal pasti sel yang mengandungi sama ada "A" atau "a" dengan sempurna (kerana COUNTIF tidak sensitif huruf besar-besaran):

    =IF(COUNTIF(A2, "*a*"),"Yes", "No")

    Formula ini pergi ke B2, atau mana-mana sel lain dalam baris 2, dan kemudian anda boleh menyeretnya ke bawah ke seberapa banyak sel yang diperlukan:

    Penyelesaian ini juga boleh digunakan untuk mencari rentetan corak tertentu . Dengan mengandaikan hanya ID yang terdiri daripada 2 kumpulan 2 aksara yang dipisahkan dengan tanda sempang adalah sah, anda boleh menggunakan "??-??" rentetan kad bebas untuk mengenal pasti mereka:

    =IF(COUNTIF(A2, "??-??"), "Valid", "")

    Cara formula ini berfungsi:

    Untuk ujian logik JIKA, kami menggunakan fungsi COUNTIF yang mengira bilangan sel yang sepadan dengan kad bebas yang ditentukantali. Memandangkan julat kriteria ialah sel tunggal (A2), hasilnya sentiasa 1 (padanan ditemui) atau 0 (padanan tidak ditemui). Memandangkan 1 bersamaan dengan TRUE dan 0 kepada FALSE, formula mengembalikan "Sah" (value_if_true) apabila kiraan ialah 1 dan rentetan kosong (value_if_false) apabila kiraan ialah 0.

    IF ISNUMBER SEARCH formula untuk separa padanan

    Cara lain untuk memaksa Excel IF berfungsi untuk padanan teks separa adalah dengan memasukkan sama ada fungsi FIND atau SEARCH dalam ujian logik. Perbezaannya ialah FIND sensitif huruf besar dan kecil manakala SEARCH tidak.

    Jadi, bergantung pada sama ada anda mahu menganggap huruf kecil dan huruf besar sebagai aksara yang sama atau berbeza, salah satu daripada formula ini akan berfungsi:

    Rumus tidak peka huruf besar-kecil untuk padanan separa:

    IF(ISNUMBER(SEARCH(" text", sel)), value_if_true, value_if_false )

    Formula sensitif huruf besar-kecil untuk padanan separa:

    IF(ISNUMBER(FIND(" text", sel)), value_if_true, value_if_false )

    Memandangkan kedua-dua fungsi direka bentuk untuk melaksanakan jenis padanan "sel mengandungi", kad liar tidak benar-benar diperlukan dalam kes ini.

    Sebagai contoh, untuk mengesan ID yang mengandungi "A" atau "a" , formulanya ialah:

    =IF(ISNUMBER(SEARCH("A", A2)), "Yes", "No")

    Untuk hanya mencari huruf besar "A" dan mengabaikan "a", formulanya ialah:

    =IF(ISNUMBER(FIND("A", A2)), "Yes", "No")

    Dalam B6 dalam tangkapan skrin di bawah, anda boleh melihat perbezaan dalam keputusan:

    Cara formula ini berfungsi:

    Di hati daripadaformula, terdapat gabungan ISNUMBER dan SEARCH (atau FIND):

    ISNUMBER(SEARCH("A", A2))

    Fungsi SEARCH mencari teks yang ditentukan ("A" dalam contoh ini) dan mengembalikan kedudukannya dalam rentetan dalam A2. Jika teks tidak ditemui, ralat #VALUE dikembalikan. Memandangkan kedua-dua SEARCH dan FIND direka bentuk untuk melaksanakan jenis padanan "sel mengandungi", kad liar tidak benar-benar diperlukan dalam kes ini.

    Fungsi ISNUMBER menukar nombor kepada TRUE dan sebarang nilai lain termasuk ralat kepada FALSE . Nilai logik pergi terus ke ujian logik IF. Dalam kes kami, A2 mengandungi "A", jadi ISNUMBER mengembalikan TRUE:

    IF(TRUE, "Yes", "No")

    Akibatnya, IF mengembalikan nilai yang ditetapkan untuk argumen value_if_true , iaitu "Ya".

    Pernyataan Excel IF OR dengan kad bebas

    Perlu mengenal pasti sel yang mengandungi salah satu rentetan teks kad bebas? Dalam kes ini, anda boleh menggabungkan pernyataan IF OR klasik dengan formula COUNTIF atau ISNUMBER SEARCH yang dibincangkan di atas.

    Sebagai contoh, untuk mencari "aa" ATAU "bb" dalam A2 mengabaikan huruf besar dan mengembalikan " Ya" jika salah satu ditemui, gunakan salah satu daripada formula ini:

    =IF(OR(ISNUMBER(SEARCH("aa", A2)), ISNUMBER(SEARCH("bb", A2))), "Yes", "")

    atau

    =IF(OR(COUNTIF(A2, "*aa*"), COUNTIF(A2, "*bb*")), "Yes", "")

    Menambah dua fungsi COUNTIF juga akan berfungsi. Dalam kes ini, tanda tambah berfungsi seperti operator OR:

    =IF(COUNTIF(A3, "*aa*") + COUNTIF(A3, "*bb*"), "Yes", "")

    Daripada rentetan kad bebas pengekodan keras dalam formula, anda boleh memasukkannya dalam sel berasingan, katakan D2 dan F2, seperti yang ditunjukkan dalam tangkapan skrin di bawah. Sila ambil perhatian bahawa inirujukan sel dikunci dengan tanda $ supaya formula menyalin dengan betul ke sel di bawah:

    =IF(OR(COUNTIF(A2, "*"&$D$2&"*"), COUNTIF(A2, "*"&$F$2&"*")), "Yes", "")

    Formula di atas berfungsi dengan baik untuk 2 padanan separa , tetapi jika anda mencari 3 atau lebih, ia akan menjadi terlalu panjang. Dalam kes ini, adalah wajar untuk mendekati tugas secara berbeza:

    Bekalkan berbilang subrentetan kepada fungsi SEARCH dalam pemalar tatasusunan, kira nombor yang dikembalikan dan semak sama ada hasilnya lebih besar daripada sifar (yang bermaksud bahawa sekurang-kurangnya satu daripada subrentetan jika ditemui):

    =IF(COUNT(SEARCH({"aa","bb"}, A2))>0, "Yes", "")

    Dengan cara ini, anda akan mendapat hasil yang betul-betul sama dengan formula yang lebih padat:

    Formula Excel IF AND dengan kad bebas

    Apabila anda ingin menyemak sama ada sel mengandungi dua atau lebih subrentetan berbeza, cara paling mudah ialah menggunakan fungsi COUNTIFS dengan kad bebas untuk ujian logik.

    Andaikan anda ingin mencari sel dalam lajur A yang mengandungi kedua-dua "b" DAN "2". Untuk melakukannya, gunakan "*b*" dan "*2*" untuk kriteria COUNTIFS dan A2 untuk julat kriteria:

    =IF(COUNTIFS(A2, "*b*", A2, "*2*"), "Yes", "")

    Cara lain ialah menggunakan formula IF AND bersama-sama dengan ISNUMBER SEARCH:

    =IF(AND(ISNUMBER(SEARCH("b", A2)), ISNUMBER(SEARCH("2", A2))), "Yes", "")

    Walaupun kami tidak memasukkan sebarang aksara kad bebas dalam formula ini, ia berfungsi seperti mencari dua rentetan kad bebas ("*b*" dan "*2*" ) dalam sel yang sama.

    Sudah tentu, tiada apa yang menghalang anda daripada memasukkan nilai carian dalam sel yang dipratentukan, D2 dan F2 dalam kes kami dan membekalkanrujukan sel kepada formula:

    =IF(AND(ISNUMBER(SEARCH($D$2, A2)), ISNUMBER(SEARCH($F$2, A2))), "Yes", "")

    Jika anda lebih suka menggunakan formula yang lebih padat di mana mungkin, maka anda mungkin lebih suka pendekatan tetap tatasusunan. Formula IF COUNT SEARCH sangat serupa dengan contoh sebelumnya, tetapi kerana kali ini kedua-dua subrentetan mesti muncul dalam A2, kami menyemak sama ada kiraan itu sama dengan 2:

    =IF(COUNT(SEARCH({"b","2"}, A2))=2, "Yes", "")

    Ini ialah kaedah utama menggunakan kad bebas dalam pernyataan IF dalam Excel. Jika anda mengetahui sebarang penyelesaian lain, pengguna lain pasti akan menghargai jika anda berkongsi pengalaman anda dalam ulasan. Saya mengucapkan terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu hadapan!

    Latihan buku kerja untuk muat turun

    Contoh formula kad bebas Excel IF (fail.xlsx)

    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.