Sıra sayılarının funksiya ilə düzgün hesablanması
- By : Elnur Isayev
- Category : Orta, ROW, SUBTOTAL, Table (Cədvəl)
- Tags: Müsabiqə suallarının cavabları, Sıra sayılarının avtomatlaşdırılması, Table (cədvəl) istifadəsi
Hesabatlarımızı hazırlayarkən bir çoxumuzun ilk sütunu sıra sayıları olur. Ancaq tez-tez sətir silərkən və ya yeni məlumatlar əlavə edərkən sıra sayılarımızı yeniləməli oluruq. Bu məqalədə göstərilən metodla artıq sıra sayılarımızı yeniləməyə ehtiyac qalmır. Hər yeni məlumat əlavə edildikdə və silindikdə funksiya rəqəmləri yeniləyir. Bu məsələ Facebook qrupunda müsabiqə sualı kimi soruşulmuşdu. Sual haqqında qısa məlumat:
Düzgün cavaba başlamamışdan qabaq bu məsləni bir çoxumuzun hansı yolnan həll etməyə çalışdığına baxaq.
Qısa videoda göstərildiyi kimi, ilk sıraya “1” rəqəmi yazılır və daha sonra da alt sətrlərə “=A4+1” (A4-ilk sətr) funksiyası daxil edilərək digər sətrlərə tətbiq olunur.
Məslənin bu şəkildə həlli tam olaraq problemi həll etmir çünki, sətirlərin silinməsi və ya məlumatın əlavəsi zamanı funksiya sıra sayılarını yeniləmir. Hətta, cədvəlin ortasında sətir silindiyi zaman aşağı sətrlər #REF! xətası verir. Çünki alt sətrlərdə yazılan funksiyada referans göstərilən xana silinmiş olur və həmin xana ilə əlaqə itir.
Düzgün cavab bu şəkildədir:
Cədvəlimizi əvvəlcə “Table” tətbiq edirik. Bunun üçün Insert ⇒ Tables ⇒ Table, və ya Ctrl + T qısa yoluna klikləyirik. Daha sonra isə cədvəlin ilk sətrində (başlıqdan sonra) aşağıdakı funksiya daxil olunur
=ROW()-ROW(Table4[[#Headers];[SS]])
ROW() funksiyası arqumentsiz yazıldığı zaman həmin sətrin nömrəsini gətirir. ROW(Table4[[#Headers];[SS]]) funksiyasında isə cədvəlin başlıq hissəsinə referans verilib və hər zaman həmin sətrin nömrəsini gətirəcəkdir. Yəni ilk sətr 4-cü sıradadırsa 4-3 = 1 nəticəsinə gəlirik. Funksiya digər sətrlərə aid edildikcə 4 rəqəmi bir vahid artacaq və sıra sayıları yaranmış olacaq. Bu məsələdə ən əsas nüans, funksiyanın cədvəl içərisində daxil edilməsidir. Çünki, funksiya daxil edilən sətrlərdə cədvəl onu hər zaman yeniləyir. Bu haqda daha ətraflı “Cədvəllərdə funksiya istifadəsi” adlı məqalədən oxuya bilərsiniz.
Biz cədvəlimizə filter tətbiq etdiyimiz zaman sıra sayıları əvvəlki kimi qalacaq. Yəni, yazdığımız funksiya filter olunmuş cədvəldə düzgün sıra sayılarını gətirməyəcək. Bəs necə edə bilərik ki, funksiya eyni zamanda filterli cədvəllərdədə düzgün hesablasın?
Filter olunmuş cədvəldə sıra sayılarının düzgün hesablanması
Əvvəlki yazıların birində “sıra sayılarının avtomatik verilməsi” haqqında yazmışdıq. Həmin məqalədə, cədvələ filter tətbiq olunduğu zaman sıra sayılarının düzgün hesablanması göstərilmişdi. Bu məqalə ilə fərqi ondadır ki, bizim indiki cədvəlimiz “Table” içərisindədir və yeni məlumat əlavə olunduğunda funksiya yenilənir. Ancaq əvvəlkində yeni məlumatların əlavə olunması nəzərə alınmamışdı.
Yenədə cədvəlimizi “Table” formatına daxil etdikdən sonra ilk sətrdə aşağıdakı funksiya yazılır.
=SUBTOTAL(3;$B$4:[@Mehsul])
Burdakı ən vacib məqam, SUBTOTAL funksiyasının ikinci arqumentində $B$4:B4 diapazonu əvəzinə $B$4:[@Mehsul] diapazonunu daxil etməmizdir. [@Mehsul] cədvəldəki cari sətirin adresidir. Əks təqdirdə cədvələ yeni sətirlər əlavə olunduğunda funksiya düzgün hesablamayacaqdır.
SUBTOTAL funksiyasının ikinci arqumnetində COUNTA istifadə olunub. Yəni, funksiya sətirlər üzrə aşağı endikcə, aktiv sətrə qədər boş olmayan xanaların sayını hesablayır. Əgər hər hansı xana boş olarsa həmin xana nəzərə alınmayacaq.