
Genel formül
=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)
Özet
Bir listedeki en son dosya sürümünü aramak için, ARA işlevine dayalı bir formül, ISNUMBER ve BUL işlevleriyle birlikte kullanabilirsiniz. Gösterilen örnekte, G7 hücresindeki formül şöyledir:
=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)
burada "dosyalar", B5: B11 olarak adlandırılan aralıktır.
Bağlam
Bu örnekte, bir tabloda tarih ve kullanıcı adıyla listelenen birkaç dosya sürümümüz var. Dosya adlarının, revizyon numarası olarak - 001, 002, 003, vb. - sonunda bir sayaç ile tekrarlandığını unutmayın.
Bir dosya adı verildiğinde, en son veya en son revizyonun adını almak istiyoruz. İki zorluk var:
- Buradaki zorluk, dosya adlarının sonundaki sürüm kodlarının dosya adıyla eşleşmeyi zorlaştırmasıdır.
- Varsayılan olarak, Excel eşleşme formülleri son eşleşmeyi değil ilk eşleşmeyi döndürür.
Bu zorlukların üstesinden gelmek için bazı karmaşık teknikler kullanmamız gerekiyor.
Açıklama
Bu formül, en son eşleşen dosya adını bulmak ve almak için ARA işlevini kullanır. Arama değeri 2'dir ve arama_vektörü bununla oluşturulur:
1/(ISNUMBER(FIND(G6,files)))
Bu kod parçacığının içinde, FIND işlevi, G6'daki değeri "dosyalar" adlandırılmış aralığı (B5: B11) içinde arar. Sonuç şuna benzer bir dizidir:
(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)
Burada, 1 sayısı bir eşleşmeyi temsil eder ve # DEĞER hatası, eşleşmeyen bir dosya adını temsil eder. Bu dizi ISNUMBER işlevine gider ve şu şekilde çıkar:
(TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;TRUE)
Hata değerleri artık YANLIŞ ve 1 sayısı artık DOĞRU'dur. Bu, 1 numaralı zorluğun üstesinden gelir, artık listedeki hangi dosyaların ilgilenilen dosya adını içerdiğini açıkça gösteren bir dizimiz var.
Daha sonra, pay 1 ile payda olarak dizi kullanılır. Sonuç şuna benzer:
(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)
aranan_vektör olarak ARA'ya gider. Bu, 2 numaralı meydan okumaya zor bir çözümdür. ARA işlevi yalnızca yaklaşık eşleşme modunda çalışır ve hata değerlerini otomatik olarak yok sayar. Bu, arama değeri olarak 2 ile DÜŞEYARA'nın 2'yi bulmaya çalışacağı, başarısız olacağı ve önceki numaraya geri adım atacağı anlamına gelir (bu durumda 7. konumdaki son 1 ile eşleşir). Son olarak, ARA, dosyalar listesindeki 7. dosyayı almak için bir dizin gibi 7 kullanır.
Boş aramaları işleme
Garip bir şekilde, arama değeri boş bir dizeyse ("") FIND işlevi 1 döndürür. Yanlış eşleşmeye karşı korunmak için formülü EĞER içine sarabilir ve boş bir arama testi yapabilirsiniz:
=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")