Bir dizgede bir kelimeyi nasıl arayacağınızı anlıyorsunuz:
SEARCH(A$2, E1)
A2(“bo” E1gibi bir değer olabilir ) içindeki (“bob”) değerini arar . Bu geri döner #VALUE, çünkü “bob” “sam” de görünmez. Ancak,
SEARCH("sam", "I'm sam")
döner 5, çünkü “sam”, “sam” 'da belirir ve 5. karakterden başlar.
Bu numarayı çok sayıda arama dizgisine ölçeklendirmek için numaradan istiyorsun. İşin püf noktası dizi formüllerini kullanmaktır . Bir dizi formülü buna biraz benziyor:
=SEARCH(A$2:A$17, E1)
bu arama E1için her değerlerin A2:A1716 sonuçlarının bir dizi oluşturma. Örnek veriler için bu sonuçlar { #VALUE; #VALUE; 5; …}.
Bu cevabın altındaki önemli notu görün.
Bunu kendi başınıza kullanamazsınız, çünkü bir hücrenin bir diziyi değil, bir değeri değerlendirmesi gerekir. Ama böyle bir şey yapabilirsin
=COUNT(SEARCH(A$2:A$17, E1))
sonuçtaki sayıları sayar SEARCH- yani, kelimelerin kaç tanesinde A(“bob”, “linda”, “sam” vb.) bulunduğunu söyler E1. Yani, senin
=IF( OR(ISNUMBER(SEARCH(A$2,E1)),…,ISNUMBER(SEARCH(A$17,E1))), 1, 0)
formül ( 1en az bir kelime bulunursa, 0aksi takdirde) ile değiştirilebilir
=IF(COUNT(SEARCH(A$2:A$17, E1))>0, 1, 0)
ya da sadece
=--(COUNT(SEARCH(A$2:A$17, $E1))>0)
( --A TRUE/ FALSEdeğerinin önüne (çift eksi) koymak , sırasıyla 1veya içine çevirir 0.)
Ama muhtemelen sadece belirlemek daha fazlasını yapmak istiyoruz olmadığını dizelerinden biri maçları; Muhtemelen hangisini bilmek istersin . SEARCH(A$2:A$17, E1)Diziyi değerlendirdiğimi söylediğimi hatırlayın
{ #VALUE; #VALUE; 5; …}? Şunu çıkaralım 5:
=MIN(IFERROR(SEARCH(A$2:A$17, $E1), ""))
ISERRORbiraz tersi olması ISNUMBERdışında biraz ; Döndürdüğü TRUEparametresinin hata değeri ise ve FALSEbu normal bir değer (sayı, Boole, tarih veya dize) buysa.
IFERROR çok uygun bir fonksiyondur;
IFERROR ( hesaplanan_değer , varsayılan_değer )
İçin Kısa
IF (ISERROR ( calculator_value ), default_value , calculator_value )
yani, bir hata değeri için varsayılan bir değer (tipik olarak hatalı olmayan bir değer) kullanır.
- Bu yüzden
IFERROR(SEARCH(A$2:A$17, $E1), "")yukarıdaki dizi sonucunu { ""; ""; 5; …}.
- Ardından boş dizeleri atlayarak diziden en düşük sayıyı çıkarır. Normalde bu , birden fazla eşleşmenin olduğu “Lütfen sam veya bob veya lucy'yi bulun” gibi durumlar hariç , tek sayı olacaktır . Bu durumlarda, dizgideki ilk eşleşme olacaktır (burada, “sam” ifadesinin göründüğü yer).
MIN( the_above )E13
Öyleyse şimdi
=MATCH(MIN(IFERROR(SEARCH(A$2:A$17, E1), "")), SEARCH(A$2:A$17,E1))
Bu ( MATCH), nerede olduğunu görmek için tam arama sonuçlarında 5(veya 13veya her neyse) arar. Yukarıdaki örneklerde, (veya veya her neyse) arama sonucundaki üçüncü öğe olduğu için bu geri döner 3, çünkü üçüncü arama sözcüğü olan “sam” a karşılık gelir.513
Aşağıdaki resimde,
F1 (eşleşme sayısı) = =COUNT(SEARCH(A$2:A$17, E1))
G1 (ilk eşleşmenin yeri) = =MIN(IFERROR(SEARCH(A$2:A$17, E1), FALSE))
H1 (ilk eşleşmenin dizini (dize numarası)) =
=MATCH(MIN(IFERROR(SEARCH(A$2:A$17, E1), "")), SEARCH(A$2:A$17,E1))

Önemli notlar:
- Bir dizi formülü yazdığınızda (yani, yukarıda tartışılan formüllerden herhangi biri), Ctrl+ Shift+ yazarak girin Enter. Bu, çevresinde kıvrımlı kaşlı ayraçlarla görünmesine neden olur. Kıvrımlı ayraçları manuel olarak yazmayın.
- Yukarıdaki formüller, aranacak verilerinizin (“ben sam” vb.) Hücrede başladığını varsayar
E1. Gerektiği gibi ayarlayın. Verilerinizin ilk satırına karşılık gelen formülleri girin ve aşağı sürükleyin.
- Boş hücreleri kaçının
A2:A17, çünkü SEARCHher dizede boş dize bulacaksınız.