Hesablanmış dəyərə əsasən LOOKUP verilməsi – Array (+Video)
- By : Elnur Isayev
- Category : Array Formulalar, IF, İləri, INDEX, MATCH, MAX, MIN, MONTH
- Tags: Müsabiqə suallarının cavabları, Müxtəlif növ LOOKUP-lar, Şərtə əsasən MAX və MIN hesablaması
Biz normal şərtlərdə LOOKUP verərkən sadə məntiqlə axtarılan dəyərin qarşısındakı (və ya hərhansı tərəfindəki) məlumatları əldə etmək istəyirik. Bəs müəyyən şərtlərə əsasən hesablanmış rəqəmlərin qarşısındakı məlumatları necə gətirmək olar? Bugünkü məqalədə bucür hesablamaların əsasında əldə edilən dəyərlərə görə necə LOOKUP veriləbiləcəyinə baxacayıq. Nümunə olaraq aşağıdakı cədvələ nəzər yetirək:
Nümunədə hər hansı bir müəssisənin əmək haqqı hərəkətləri (jurnalı) göstərilib. Həmin cədvələ əsasən aşağıdakı sualların cavablarını tapmaq istəyirik
- Ən az (və ya ən çox) əmək haqqı alan kimdir?
- Satış departamentində (və ya digər departamentlər) ən çox əmək haqqı alan kimdir?
- Vəzifəsi “Analitik” olan və beşinci ayda ən çox əmək haqqı alan hansı departamentin işçisidir? və s.
Qeyd olunan suallar əvvəlcə dəyərin tapılmasını tələb edir. Daha sonra isə, həmin hesablanan dəyərin əsasında LOOKUP veriləcəkdır. Hesablamalar əsasən “ən az” (MIN) və “ən çox” (MAX) dəyərləri üzərindən aparılacaq.
Bir şərtə əsasən hesablanan MAX və MIN dəyərləri üzərindən LOOKUP
Misal üçün, vəzifəsi “Analitik” olan hansı əməkdaş ən az əmək haqqı alır? Bu sualda bir şərtə əsasən minimum dəyər tapılır. Daha sonra isə həmin dəyərə əsasən LOOKUP verilir.
Qeyd: Şərtə əsasən MAX və MIN dəyərlərinin tapılması “Şərtə görə MAX və MIN dəyərlərin tapılması – Array ilə” adlı məqalədə ətraflı izah olunub.
İlk mərhələ, şərtimizə uyğun siyahının (array) yaradılmasıdır. Bu funksiyada, əgər “vəzifə” sütunundakı sətrlər “Analitik” kəliməsinə bərabərdirsə rəqəmləri gətir, deyilsə “” işarələrini gətir şəklində qurulub.
=IF(C2:C201="Analitik";E2:E201;"")
“F9” ilə funksiyanın nəticəsinə baxaq
={"";"";"";"";"";"";"";1020;"";"";"";1782;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1709;"";"";"";1074;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1257;"";"";"";1646;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1211;"";"";"";1291;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1449;"";"";"";1644;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1702;"";"";"";1105;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1400;"";"";"";1447;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1331;"";"";"";1499;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1472;"";"";"";1352;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";1650;"";"";"";1422;"";"";"";"";"";"";"";""}
Funksiya harda “Analitik” kəliməsini tapdısa qarşısındakı rəqəmi gətirdi. İndi isə həmin rəqəmlərin içərisində MIN rəqəmi tapırıq.
=MIN(IF(C2:C201="Analitik";E2:E201;"")) "Nəticə: 1020"
Əlimizdə artıq MIN dəyər var. Indi isə, həmin MIN dəyərin siyahının neçənci sətrində olduğunu tapmalıyıq. Bunun üçün isə MATCH funksiyasından istifadə ediləcək.
=MATCH(MIN(IF(C2:C201="Analitik";E2:E201;""));IF(C2:C201="Analitik";E2:E201;"");0) "Nəticə: 8"
MATCH funksiyasının ikinci argumentində yenə də IF ilə əldə etdiyimiz siyahını (array) istifadə etdik. Çünki, həmin MIN dəyər başqa vəzifələr qarşısında da ola bilər.
Son olaraq “Ad – Soyad” sütunuda MATCH ilə əldə etdiyimiz sətr nömrəsini INDEX içərisində istifadə edərək həmin şəxsin kim olduğunu tapırıq.
=INDEX(B2:B201;MATCH(MIN(IF(C2:C201="Analitik";E2:E201;""));IF(C2:C201="Analitik";E2:E201;"");0))
Funksiyanı yekunlaşdırdıqdan sonra “Ctrl+Shift+Enter” bərabər klikləyirik.
İki və daha çox şərtə əsasən hesablanan MAX və MIN dəyərlər üzərindən LOOKUP
Misal üçün, May ayında müdirlər arasında ən çox əmək haqqı alan hansı departamentdə işləyir? Bu nümunədə iki şərtə əsasən MAX dəyər tapılır; ay və müdir, daha sonra isə INDEX ilə departament adı tapılır.
Yenə də ilk əvvəl şərtə əsasən siyahını yaradırıq.
=IF((C2:C201="Müdir")*(MONTH(D2:D201)=5);E2:E201;"")
İki şərti tanıtmaq üçün IF funksiyasının ilk argumentində (C2:C201=”Müdir”)*(MONTH(D2:D201)=5) əməliyyatı aparıldı. Yəni, həm vəzifə “Müdir” olmalıdır və həm də beşınci ay olmalıdır. Funksiyanın nəticəsi bu şəkildədir.
={"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";4715;"";4652;4928;"";"";4411;"";"";"";"";"";"";"";"";3665;"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";"";""}
İndi isə həmin rəqəmlərin ən böyük olanını tapacayıq.
=MAX(IF((C2:C201=G5)*(MONTH(D2:D201)=5);E2:E201;"")) "Nəticə: 4928"
Əldə etdiyimiz dəyər həmin siyahıda neçənci sıradadır?
=MATCH(MAX(IF((C2:C201=G5)*(MONTH(D2:D201)=5);E2:E201;""));IF((C2:C201=G5)*(MONTH(D2:D201)=5);E2:E201;"");0)
Həmin sıra sayına əsasən departament sütununa INDEX tətbiq olunacaq.
=INDEX(A2:A201;MATCH(MAX(IF((C2:C201=G5)*(MONTH(D2:D201)=5);E2:E201;""));IF((C2:C201=G5)*(MONTH(D2:D201)=5);E2:E201;"");0))
İstənilən şərt sayısını eyni metodu istifadə edərək hesablama apara bilərsiniz. Məqalədə istifadə oluna bütün funskiyalar üçün “Ctrl+Shift+Enter” tətbiq olunur, çünki hamısı “Array” formuladır.