Mencari rumus untuk mencari pola tertentu di Excel


-1

Saya mencari rumus untuk mencari "kata" dengan pola huruf tertentu, seperti INNSA1atau INMAA4atau INPTPB, di mana kata dimulai dengan INdan diakhiri dengan 4, 1, 6, atau B. Kata-katanya selalu tepat enam karakter dan huruf-hurufnya bisa huruf besar atau kecil.

Kumpulan sel Excel masing-masing berisi kalimat di mana satu atau lebih kata-kata tersebut akan ditemukan (selalu setidaknya satu). Sebagai contoh:

  • Lokasi Kustom saya adalah INNSA1
  • Saya bekerja di INMAA4
  • Saya ingin pergi ke INDEL6
  • INNSAB ADALAH LOKASI PAPAN

Kata (atau kata-kata, jika lebih dari satu), dapat berada pada posisi apa pun dalam kalimat. Kata-kata target akan selalu menjadi kata-kata yang terpisah, bukan bagian dari kata yang lebih besar.

Untuk setiap kalimat (yaitu, sel), saya ingin mencari keberadaan kata yang cocok dengan pola huruf yang dijelaskan, dan mengembalikan kata ini sebagai nilai.


2
Pemungutan suara berat untuk berteriak di semua ibukota. Sangat menyarankan Anda mengedit.
Michael Harvey

Saya benar-benar tidak memiliki gambaran yang jelas tentang kebutuhan Anda. Apakah Anda mencari keberadaan (benar / salah) dari "kata" (yaitu, string karakter yang hanya berisi alfanumerik - huruf / angka tetapi tidak ada spasi atau jenis karakter lain), yang cocok dengan pola (dimulai dengan IN, dan diakhiri dengan 4, 1, 6, atau b), yang dapat ditemukan di mana saja dalam "kalimat" tetapi dibatasi oleh ruang atau tanda baca, yang terkandung dalam satu sel? Apakah selalu berupa "kata" yang terpisah atau bisakah itu string karakter yang tertanam dalam "kata" yang lebih panjang? (lanjutan)
fixer1234

Apakah selalu tepat 6 karakter? Apakah huruf-hurufnya selalu huruf besar? Seperti apa "kalimat" itu? Bisakah "kata" muncul lebih dari sekali, termasuk sebagai bagian dari kata yang lebih besar? Ini akan lebih mudah dimengerti jika Anda memasukkan contoh kalimat yang mewakili berbagai kondisi.
fixer1234

Juga, seperti yang ditafsirkan oleh Siswa Gary, apakah kata itu satu-satunya hal di dalam sel atau di suatu tempat di dalam teks lain dalam sel (yang merupakan persyaratan yang sangat berbeda)?
fixer1234

Saya ingin mencari pola tertentu dalam kalimat di dalam sel. mis. "Lokasi Kustom saya adalah INNSA1" ATAU "Saya bekerja di INMAA4" atau "Saya ingin pergi ke INDEL6"
ajit maurya

Jawaban:


0

Ini hanyalah contoh yang bisa Anda adaptasi dengan skema Anda.

Dengan data dari A2 ke A26 , di B2 masukkan:

=IF(AND(LEFT(A2,2)="IN",OR(RIGHT(A2,1)="B",RIGHT(A2,1)="1",RIGHT(A2,1)="4",RIGHT(A2,1)="6")),1+MAX($B$1:B1),"")

dan salin ke bawah:

masukkan deskripsi gambar di sini

Seperti yang Anda lihat, setiap item data "baik" ditandai dengan indeks berurutan sederhana.


0

Ada banyak cara untuk melakukan setiap bagian dari masalah, tetapi kombinasi persyaratan menunjuk pada satu pendekatan yang sederhana dan mudah, atau solusi VBA. Solusi non-VBA menggunakan kolom pembantu. Tata letak spreadsheet Anda tidak diketahui, seperti faktor-faktor lain, seperti jumlah kalimat dan jumlah hasil yang mungkin, dan bagaimana Anda perlu dan ingin menggunakan hasilnya. Jadi jawaban ini akan menjadi pedoman yang lebih umum daripada solusi spesifik.

Menggunakan fungsi, akan sulit untuk mencari kalimat yang berpotensi lebih dari satu target. Pendekatan yang lebih sederhana adalah memecah kalimat menjadi kata-kata dan kemudian memeriksa kata-kata. Cara sederhana untuk mem-parsing kalimat adalah dengan wizard Konversi Teks Ke Kolom bawaan.

Dengan asumsi kalimat dalam kolom A, biarkan beberapa kolom berikutnya kosong untuk hasil Anda. Dengan begitu, hasil Anda akan selalu berada di lokasi yang diketahui, terlihat di sebelah data Anda. Saya akan mengasumsikan maksimum dua, sehingga kolom B dan C akan berisi nilai hasil.

Gambarlah jumlah kata maksimum yang bisa ada dalam kalimat, dan cadangan bahwa banyak kolom berikutnya untuk kolom pembantu. Ini akan digunakan untuk menguji setiap kata. Katakanlah Anda mengizinkan lima kata. Kolom D: H akan berisi rumus yang masing-masing menunjuk ke kolom I: M.

Katakanlah baris 2 adalah baris data pertama Anda, jadi rumus pertama akan berada di D2, menunjuk ke I2. Rumusnya akan mirip dengan yang disarankan oleh Siswa Gary:

=IF(AND(LEFT(I2,2)="IN",OR(RIGHT(I2,1)="B",RIGHT(I2,1)="1",RIGHT(I2,1)="4",RIGHT(I2,1)="6")),1,0)

Formula alternatif adalah:

=IFERROR((LEFT(I2,2)="IN")*(SEARCH(RIGHT(I2,1)," 416b")>1),0)

Itu hanya memberi Anda beberapa ide tentang bagaimana cara mengetahui apakah kata target sesuai dengan pola. Rumus kedua menggunakan SEARCH (karena tidak peka huruf besar-kecil), untuk melihat apakah karakter terakhir ada dalam daftar Anda. Menguji dua karakter pertama untuk IN, dan karakter terakhir, masing-masing menghasilkan True atau False, yang diperlakukan oleh Excel sebagai 1dan 0, masing-masing. Jadi, jika kedua tes itu benar hasilnya adalah 1sebaliknya 0.

Dalam ekspresi SEARCH, saya mulai dengan blank dan menguji hasilnya> 1. Alasan saya melakukan ini adalah karena saya menggunakan MS Office Online untuk mengujinya, dan ia berpikir karakter paling kanan dari sel kosong ditemukan di posisi 1 dari string tes.

Jika SEARCH tidak menemukan yang cocok, itu mengembalikan kesalahan, jadi membungkus rumus di IFERROR memastikan bahwa setiap kata yang tidak cocok akan menghasilkan 0.

Jadi salah satu rumus kembali 1jika kata itu sesuai dengan pola Anda, atau 0jika tidak (atau jika sel targetnya kosong).

Masukkan salah satu rumus di D2, dan seret atau salin melintasi ke H2, dan ke bawah ke baris terakhir yang Anda butuhkan.

Untuk mengisi sel target, pilih semua data di kolom A, dan salin dan tempel ke dalam kolom I (Teks ke Kolom menimpa data dan mulai di kolom data). Pilih data di kolom I. Pada Datatab, di Data Toolsgrup, klik Text to Columns. Anda akan mendapatkan panduan yang cukup jelas.

Katakan itu data dibatasi, dan pilih spacesebagai pembatas. Ini akan memberi Anda pratinjau tentang bagaimana menurut Anda Anda ingin menguraikan kata-kata. Ketika Anda menyelesaikan wizard itu akan menempatkan setiap kata di sel berturut-turut di baris.

Rumus Anda dalam D: H harus menunjukkan setidaknya satu 1di setiap baris. Itu adalah kata-kata Anda, dan kolomnya berada pada posisi relatif yang sama dengan kata yang diurai.

Untuk mendapatkan nilai kata pertama di kolom B, gunakan INDEX dan MATCH untuk menemukan yang pertama 1di baris dalam D: H dan mengambil nilai yang sesuai dari baris yang sama di I: M. Misalnya, B2 adalah:

=INDEX(I2:M2,MATCH(1,D2:H2,0))

Ini mengambil nilai dari sel di I2: M2 yang sesuai dengan tempat yang sama persis 1ditemukan di D2: H2.

Untuk mendapatkan nilai berikutnya untuk kolom C (dan seterusnya jika ada lebih dari dua), ada sejumlah solusi untuk menemukan pencocokan Nth 1. Berikut ini tautan ke satu metode.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.