Periksa apakah sel berisi substring

229

Apakah ada fungsi bawaan untuk memeriksa apakah sel berisi karakter / substring yang diberikan?

Itu berarti Anda dapat menerapkan fungsi tekstual seperti Left/ Right/ Midpada kondisi kondisional tanpa melemparkan kesalahan ketika membatasi karakter tidak ada.

geotheory
sumber

Jawaban:

374

Coba gunakan ini:

=ISNUMBER(SEARCH("Some Text", A3))

Ini akan kembali TRUEjika sel A3berisi Some Text.

gwin003
sumber
7
Licik! Terima kasih gwin003 :) Saya masih sedikit terkejut tidak ada fungsi yang lebih intuitif untuk ini.
geotheory
18
Ya saya setuju, alangkah baiknya jika ada CONTAINS("Text", cell)fungsi.
gwin003
20
mungkin layak untuk dicatat bahwa ini saya case sensitif, dan jika Anda ingin mencocokkan case, Anda harus menggunakan FIND()sebagai penggantiSEARCH()
Code Jockey
7
mendapat kesalahan saat menggunakan ,bukan ;. Setelah mengubah formula yang disediakan untuk =ISNUMBER(SEARCH("Some Text"; A3))itu berfungsi. Terima kasih!
renatov
6
@renatov yang sebenarnya tergantung pada lokasi OS Anda; khusus, karakter yang digunakan untuk "pemisah daftar".
pepoluan
22

Rumus berikut menentukan apakah teks "PERIKSA" muncul di sel C10. Jika tidak, hasilnya kosong. Jika ya, hasilnya adalah karya "PERIKSA".

=IF(ISERROR(FIND("CHECK",C10,1)),"","CHECK")
Steve
sumber
Anda dapat menggunakan 4 spasi atau tab di awal baris untuk menyorot blok kode.
NiematojakTomasz
@Steve, TERIMA KASIH;)
Dimitri
12

Formula ini tampaknya lebih intuitif bagi saya:

=SUBSTITUTE(A1,"SomeText","") <> A1

ini mengembalikan BENAR jika "SomeText" terkandung dalam A1.

Rumus IsNumber / Search dan IsError / Find yang disebutkan dalam jawaban lain tentu berhasil, tetapi saya selalu merasa perlu melihat bantuan atau terlalu sering bereksperimen di Excel dengan yang itu.

Warren Stevens
sumber
12

Bagi mereka yang ingin melakukan ini menggunakan fungsi tunggal di dalam pernyataan IF, saya menggunakan

=IF(COUNTIF(A1,"*TEXT*"),TrueValue,FalseValue)

untuk melihat apakah TEXT substring ada di sel A1

[CATATAN: TEXT perlu memiliki tanda bintang di sekitarnya]

dsm
sumber
Ini berfungsi, tetapi penggunaan rumus COUNTIF saat data sangat besar, membuat file tidak merespons, bahkan ukuran file menjadi sangat besar
Gaurravs
8

Periksa FIND()fungsi di Excel.

Sintaksis:

FIND( substring, string, [start_position])

Kembali #VALUE!jika tidak menemukan substring.

paras_doshi
sumber
Ya, bersarang di ISNUMBERsini juga berfungsi, hanya untuk jenis huruf yang cocok.
geotheory
1

Saya suka jawaban Rink.Attendant.6. Saya sebenarnya ingin memeriksa beberapa string dan melakukannya dengan cara ini:

Pertama situasinya: Nama-nama yang bisa menjadi pembangun rumah atau nama komunitas dan saya perlu menandai pembangun sebagai satu kelompok. Untuk melakukan ini saya mencari kata "pembangun" atau "konstruksi", dll. Jadi -

=IF(OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*builder*")),"Builder","Community")
Pemberian
sumber
Selamat datang di SO. Anda harus membaca apa yang membuat jawaban yang bagus .
geotheory
Saya tidak mengerti apa yang harus dilakukan ini .. memeriksa pembangun dua kali ketika mungkin sekali sudah cukup. Jika ia menemukan builder, ia mengembalikan builder, atau ia akan mengembalikan komunitas. Konstruksi kata tidak muncul di mana pun. Mungkin kira-kira seperti itu =OR(COUNTIF(A1,"*builder*"),COUNTIF(A1,"*construction*"))?
fantabolous
Ada COUNTIFS:COUNTIFS(A1,"*builder*",A1,"*construction*")
vstepaniuk
1

Ini pertanyaan lama tapi saya pikir itu masih berlaku.

Karena tidak ada fungsi CONTAINS, mengapa tidak mendeklarasikannya di VBA? Kode di bawah ini menggunakan fungsi VBA Instr, yang mencari substring dalam sebuah string. Ia mengembalikan 0 ketika string tidak ditemukan.

Public Function CONTAINS(TextString As String, SubString As String) As Integer
    CONTAINS = InStr(1, TextString, SubString)
End Function
Bjorn
sumber
Cara yang baik untuk meningkatkan efisiensi pribadi, tetapi dengan biaya reproduktifitas saya katakan :)
geotheory
0

Ini adalah pertanyaan lama tetapi solusi bagi mereka yang menggunakan Excel 2016 atau yang lebih baru adalah Anda dapat menghapus kebutuhan untuk struktur bersarang jika menggunakan IFS( condition1, return1 [,condition2, return2] ...)kondisional baru .

Saya telah memformatnya untuk membuatnya lebih jelas secara visual tentang bagaimana menggunakannya untuk kasus pertanyaan ini:

=IFS(
ISERROR(SEARCH("String1",A1))=FALSE,"Something1",
ISERROR(SEARCH("String2",A1))=FALSE,"Something2",
ISERROR(SEARCH("String3",A1))=FALSE,"Something3"
)

Karena SEARCHmengembalikan kesalahan jika string tidak ditemukan saya membungkusnya dengan ISERROR(...)=FALSEuntuk memeriksa kebenaran dan kemudian mengembalikan nilai yang diinginkan. Akan lebih bagus jika SEARCHmengembalikan 0 bukannya kesalahan untuk keterbacaan, tapi itu hanya cara kerjanya sayangnya.

Catatan penting lainnya adalah bahwa IFSakan mengembalikan kecocokan yang ditemukan pertama kali dan karenanya memesan adalah penting. Sebagai contoh jika string saya Surf, Surfing, Surfsseperti di String1,String2,String3atas dan string sel saya apakah Surfingitu akan cocok pada suku pertama bukan yang kedua karena substring yang Surf. Jadi penyebut yang umum harus menjadi yang terakhir dalam daftar. Saya IFSperlu diperintahkan Surfing, Surfs, Surfuntuk bekerja dengan benar (bertukar Surfingdan Surfsjuga bekerja dalam contoh sederhana ini), tetapi Surfakan menjadi yang terakhir.

Shawn
sumber
sebagian besar akan ingin jika / kemampuan lain, dengan kata lain nilai default. Menambahkan kutipan ini dapat memperluas daya tarik jawaban Anda: "Tidak ada cara untuk menetapkan default jika semua tes mengembalikan FALSE (yaitu nilai jika salah). Sebagai gantinya, masukkan TRUE untuk tes terakhir, dan kemudian nilai untuk kembali sebagai nilai default jika FALSE "
whitneyland
-3

Ini rumus yang saya gunakan

=IF( ISNUMBER(FIND(".",A1)), LEN(A1) - FIND(".",A1), 0 )

Jim D
sumber
Ini memeriksa untuk melihat apakah "." disertakan dalam A1, dan jika ya, ia mengembalikan ... jumlah karakter yang tersisa di A1, dimulai dengan ".". Tidak yakin apakah perhitungan tambahan itu relevan di sini.
Grade 'Eh' Bacon
Leastwise, gunakanIFERROR(LEN(A1) - FIND(".", A1), 0)
Nigel Touch