Excel - cara menemukan string wildcard dari daftar besar

Tabel data saya terdiri dari a) nomor indeks dan b) string yang terkait dengan nomor indeks tersebut. Dalam template saya, pengguna akan memasukkan nomor indeks dan string yang terkait dengan nomor indeks tersebut akan ditampilkan.

Misalnya

1    Bag
1    Catsgsg
1    Dogs
1    oygg
2    Stackoverflow
2    tacks
2    Binoculars
2    all
.
.
.
1000   Bonobos
1000   Canopy
1000   Ascot

Jika pengguna memasukkan angka 1000, bagaimana cara menarik kata bonobo dengan mengetahui bahwa ada kata b tetapi bukan kata sebenarnya? Bagaimana cara memperbaiki rumus array saya agar berfungsi untuk wildcard?

=INDEX(Partners!$D$2:$D$2227,MATCH(1,(Partners!$A$2:$A$2227=number)*(Partners!$C$2:$C$2227="b *"),0))

EDIT: Saya dapat mengubah solusi callum dan memiliki akun rumus untuk beberapa string wildcard.

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(num&"A*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"B*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0)+IFERROR(SEARCH(num&"C*",Partners!$A$2:$A$2227&Partners!$D$2:$D$2227),0),0))

person lostinOracle    schedule 28.03.2017    source sumber


Jawaban (2)


Hanya fungsi tertentu yang menerima wildcard sehingga Anda harus menggunakan salah satunya jika ingin menggunakan wildcard *. SEARCH adalah salah satu contoh:

=INDEX(Partners!$D$2:$D$2227,MATCH(1,IFERROR(SEARCH(number&"b*",Partners!$A$2:$A$2227&Partners!$B$2:$B$2227),0),0))

Atau, Anda bisa menghindari wildcard sama sekali:

=INDEX(Partners!$D$2:$D$2227,MATCH(number&"b",Partners!$A$2:$A$2227&LEFT(Partners!$B$2:$B$2227,1),0))


keduanya dimasukkan sebagai rumus array (Ctrl+Shift+Enter)

person CallumDA    schedule 28.03.2017
comment
Terima kasih callum, persis apa yang saya cari. - person lostinOracle; 28.03.2017
comment
apakah mungkin untuk mencari array wildcard? misalnya, jika Anda ingin kata apa pun yang dimulai dengan a b, c atau d... dapatkah Anda melakukan search(number&{b*, c*, d*},......) - person lostinOracle; 28.03.2017
comment
Hai @ excelmonkey93, dengan senang hati membantu. Sayangnya fungsi pencarian tidak dapat mencapai hal itu tetapi mungkin dapat dilakukan dengan beberapa rumus rumit lainnya. Saya mungkin akan menghemat waktu dan memiliki rumus terpisah untuk setiap nilai pencarian b,c,... dll - person CallumDA; 28.03.2017
comment
terima kasih, saya bisa mengetahuinya. posting yang diedit dengan solusi - person lostinOracle; 28.03.2017

Mencoba,

=INDEX(B:B, AGGREGATE(15, 6, ROW(A$1:INDEX(A:A, MATCH(1E+99, A:A)))/((A$1:INDEX(A:A, MATCH(1E+99, A:A))=E6)*(LEFT(B$1:INDEX(B:B, MATCH(1E+99, A:A)), 1)=F6)), 1))

Dalam contoh gambar berikut, saya telah mengubah B Anda menjadi C untuk menunjukkan bahwa rumus tersebut tidak hanya mengembalikan 1000 pertama ditemukan.

masukkan deskripsi gambar di sini

person Community    schedule 28.03.2017