
Özet
EĞERSAY (veya EĞERSAY) değişken bir aralıkla yapılandırmak için KAYDIR işlevini kullanabilirsiniz. Gösterilen örnekte, B11'deki formül şöyledir:
=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")
Bu formül, B5'te başlayan ve formülün bulunduğu hücrenin 2 satır yukarısında biten bir aralıktaki boş olmayan hücreleri sayar. Aynı formül kopyalanır ve gösterildiği gibi verilerdeki son girişin 2 satır altına yapıştırılır.
Açıklama
Gösterilen örnekte, B11'deki formül şöyledir:
=COUNTIFS(OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1),"")
İçten dışa doğru çalışarak, değişken bir aralık oluşturma işi burada OFSET işlevi ile yapılır:
OFFSET(B$5,0,0,ROW()-ROW(B$5)-1,1) // variable range
OFFSET'in beş argümanı vardır ve şu şekilde yapılandırılmıştır:
- başvuru = B $ 5, B5 hücresinden başla, satır kilitli
- satırlar = 0, başlangıç hücresinden sıfır satır uzaklığı
- cols = 0, başlangıç hücresinin sıfır sütunundan uzaklığı
- yükseklik = SATIR () - SATIR (B $ 5) -1 = 5 sıra yüksek
- genişlik = 1 sütun genişliğinde
Aralığın yüksekliğini satırlar halinde hesaplamak için, SATIR işlevini şu şekilde kullanırız:
ROW()-ROW(B$5)-1 // work out height
SATIR (), "geçerli" hücrenin (yani formülün içinde bulunduğu hücre) satır numarasını döndürdüğünden, şu şekilde sadeleştirebiliriz:
=ROW()-ROW(B$5)-1 =11-5-1 =5
Yukarıdaki yapılandırmayla OFSET, B5: B9 aralığını doğrudan EĞERSAY'a döndürür:
=COUNTIFS(B5:B9,"") // returns 4
Yukarıdaki formülde B $ 5 başvurusunun, sütun göreli ve satır kilitli, karışık bir başvuru olduğuna dikkat edin. Bu, formülün başka bir sütuna kopyalanmasına ve çalışmaya devam etmesine izin verir. Örneğin, C12'ye kopyalandığında formül şu şekildedir:
=COUNTIFS(OFFSET(C$5,0,0,ROW()-ROW(C$5)-1,1),"")
Not: OFFSET, geçici bir işlevdir ve büyük veya karmaşık çalışma sayfalarında performans sorunlarına neden olabilir.
DOLAYLI ve ADRES ile
Diğer bir yaklaşım, DOLAYLI ve ADRES işlevlerine dayalı bir formül kullanmaktır. Bu durumda, bir aralığı metin olarak birleştiririz, ardından metni referans olarak değerlendirmek için DOLAYLI kullanırız. B11'deki formül şöyle olacaktır:
=COUNTIFS(INDIRECT(ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())),"")
ADRES işlevi, aşağıdaki gibi bir aralık oluşturmak için kullanılır:
ADDRESS(5,COLUMN())&":"&ADDRESS(ROW()-2,COLUMN())
ADDRESS'in ilk örneğinde, kodlanmış değer 5 olarak satır numarası sağlıyoruz ve sütun numarasını SÜTUN işlevi ile sağlıyoruz:
=ADDRESS(5,COLUMN()) // returns "$B$5"
İkinci örnekte, "geçerli" satır numarası eksi 2'yi ve mevcut sütunu SÜTUN işlevi ile sağlarız:
=ADDRESS(ROW()-2,COLUMN()) // returns "$B$9"
Bu iki değeri bir araya getirdikten sonra elimizde:
"$B$5:$B$9" // as text
Bunun bir metin dizesi olduğuna dikkat edin. Geçerli bir referansa dönüştürmek için DOLAYLI kullanmamız gerekir:
=INDIRECT("$B$5:$B$9") // returns $B$5:$B$9 as valid range
Son olarak, B11'deki formül şöyle olur:
=COUNTIFS($B$5:$B$9,"") // returns 4
Not: DOLAYLI geçici bir işlevdir ve büyük veya karmaşık çalışma sayfalarında performans sorunlarına neden olabilir.