Excel formülü: Son dosya revizyonunu ara -

İçindekiler

Genel formül

(=MAX(IF(ISERROR(SEARCH(H5&"*",files)),0,ROW(files)-ROW(INDEX(files,1,1))+1)))

Özet

Bir tablodaki son dosya revizyonunun konumunu (satırını) bulmak için, birkaç Excel işlevine dayalı bir formül kullanabilirsiniz: MAKS, EĞER, ISERROR, SATIR ve DİZİN.

Gösterilen örnekte, H6 hücresindeki formül şöyledir:

(= MAKS (EĞER (ISERROR (SEARCH (H5 & "*", dosyalar)), 0, SATIR (dosyalar) -ROW (INDEX (dosyalar, 1,1)) + 1)))

burada "dosyalar", C4: C11 olarak adlandırılan aralıktır.

Not: Bu bir dizi formülüdür ve kontrol + shift + enter ile girilmelidir.

Bağlam

Bu örnekte, bir tabloda tarih ve kullanıcı adıyla listelenen birkaç dosya sürümümüz var. Sürümün ("CA", "CB", "CC", "CD", vb.) Temsil edilmesi için sonuna eklenen kod haricinde dosya adlarının tekrarlandığını unutmayın.

Belirli bir dosya için, son revizyonun konumunu (satır numarasını) bulmak istiyoruz. Dosya adlarının sonundaki sürüm kodları dosya adıyla eşleşmeyi zorlaştırdığı için bu karmaşık bir sorundur. Ayrıca, Excel eşleşme formülleri varsayılan olarak son eşleşmeyi değil ilk eşleşmeyi döndürecektir, bu nedenle bu zorluğun üstesinden bazı karmaşık tekniklerle çalışmamız gerekir.

Açıklama

Bu formülün özünde, belirli bir dosya için satır numaralarının bir listesini oluşturuyoruz. Ardından, bu dosyanın son revizyonuna (son oluşum) karşılık gelen en büyük satır numarasını elde etmek için MAX işlevini kullanırız.

Belirli bir dosyanın tüm oluşumlarını bulmak için, sürüm kodlarını göz ardı ederek dosya adıyla eşleşecek yıldız (*) joker karakteriyle yapılandırılmış SEARCH işlevini kullanırız. SEARCH, metin bulunamadığında bir VALUE hatası atar, bu nedenle aramayı ISERROR'a kaydırırız:

ISERROR(SEARCH(H5&"*",files))

Bu, aşağıdaki gibi bir DOĞRU ve YANLIŞ değerler dizisi ile sonuçlanır:

(YANLIŞ; DOĞRU; YANLIŞ; YANLIŞ; DOĞRU; DOĞRU; YANLIŞ; DOĞRU)

Kafa karıştırıcıdır, ancak DOĞRU bir hatayı (metin bulunamadı) ve YANLIŞ bir eşleşmeyi temsil eder. Bu dizi sonucu, mantıksal test olarak IF işlevine beslenir. Değer için DOĞRU ise sıfır kullanırız ve doğruysa değer için, birlikte çalıştığımız aralık için göreli satır numaraları üreten bu kodu sağlarız:

ROW(files)-ROW(INDEX(files,1,1))+1)

IF işlevi daha sonra şuna benzer bir değer dizisi döndürür:

(1; 0; 3; 4; 0; 0; 7; 0)

Sıfır dışındaki tüm sayılar "dosyaadı1" için eşleşmeleri temsil eder - yani "dosyaadı1" in göründüğü "dosyalar" adlı adlandırılmış aralık içindeki satır numarası.

Son olarak, bu örnekte 7 olan bu dizideki maksimum değeri elde etmek için MAX işlevini kullanıyoruz.

Son revizyonla ilgili bilgileri (yani tam dosya adı, tarih, kullanıcı, vb.) Almak için bu satır numarasıyla INDEX'i kullanın.

Adlandırılmış aralık olmadan

Hücre adreslerini elle girmeniz gerekmediğinden, adlandırılmış aralıklar daha karmaşık bir formül oluşturmayı hızlı ve kolay hale getirir. Ancak, bu durumda, "dosyalar" adlı adlandırılmış aralığın ilk hücresini elde etmek için fazladan bir işlev (INDEX) kullanıyoruz, bu da işleri biraz karmaşık hale getiriyor. Adlandırılmış aralık olmadan formül şuna benzer:

(=MAX(IF(ISERROR(SEARCH(H5&"*",C4:C11)),0,ROW(C4:C11)-ROW(C4)+1)))

Ilginç makaleler...