Məlumatlar Tamdır amma Funksiya Gətirmir? VLOOKUP-da Qarşılaşılan Xətalar (+Video)
- By : Elnur Isayev
- Category : COLUMNS, LEFT, LEN, Nümunələr və Hilələr, Orta, TRIM, VLOOKUP
- Tags: "Xata"-larla iş, Müxtəlif növ LOOKUP-lar
VLOOKUP işlədərkən bəzən funksiya məlumatları gətirmir. Halbuki cədvələ geri dönüb baxanda görürük ki, həmin məlumat orda var ancaq funksiya tapa bilmir. Bugün, istifadəçilərin VLOOKUP işlədərkən ən çox qarşılaşdıqları problemlər haqqında yazacam. Ən çox rastlanan problemlər bu şəkildədir.
Məlumat növlərinin eyni olmaması
Əgər axtardığınız məlumat “rəqəm” və cədvəldəki məlumatlar isə “mətn” formatındadırsa ( və ya tərsi) o zaman funksiya məlumatı tapa bilməyəcəkdir.
Misal üçün, sağdakı nümunədə “147” kodlu məhsulu cədvəldə axtarış verdim və funksiya həmin məhsulu tapa bilmədi. Halbuki cədvəldə həmin kod var.
Burdakı problem odur ki, axtardığımız məlumat (“B9”) rəqəm formatında, cədvəldəki məlumatlar isə (“A2:A7”) mətn formatındadır. Bəs bu formatların fərqlı olduğunu necə bilmək olar?
- Əgər düzləndirməyə (Home-alignment) toxunulmuyubsa rəqəmlər sağa doğru, mətnlər isə sola doğru meyilli olur (şəkildə oxlarla göstərilib).
- Bərabərlik funksiyası ilə yoxlana bilər. Nəticəsi FALSE olarsa demə ki, formatlar fərqlidir
=B9=B5
3. Məlumat funksiyaları ilə yoxlana bilər. Həmin funksiyaları C sütununda qeyd olunub. ISTEXT funksiyası məlumatın mətn olub olmamasını yoxluyur. ISNUMBER isə rəqəm olmasını yoxluyur. “A2:A7” aralığında ISTEXT funksiyası TRUE nəticəsi verib, yəni mətndir. “B9” xanasında isə ISNUMBER funksiyası TRUE nəticəsi verib, yəni rəqəmdir.
Problemin qaynağını tapdıqdan sonra əlmizdəki məlumata əsasən funksiyada düzəliş veriləcək.
Əgər məlumat bazasi “mətn” formatında, “axtarılan kod” isə rəqəm formatındadırsa, o zaman “axtarılan dəyəri” (B9) mətnə çevirəcəyik.
=VLOOKUP(TRIM(B9);$A$2:$B$7;2;0) =VLOOKUP(LEFT(B9;100);$A$2:$B$7;2;0) =VLOOKUP(""&B9;$A$2:$B$7;2;0)
Burda əsas məqsəd rəqəm məlumatını mətnə çevirməkdir. Mətn funksiyalarında əməliyyat görən bütün rəqəmlər nəticədə mətn formatına çevriləcəyi üçün burda əsasən mətn funksiyalarından istifadə etdim.
Əgər axtardığınız məlumat mətn və cədvəldəki məlumatlar isə rəqəm formatındadırsa (üstdəki nümunənin tərsi) o zaman funksiyalar bu şəkildə yazıla bilər.
=VLOOKUP(B9*1;A2:B7;2;0) =VLOOKUP(--B9;A2:B7;2;0)
Burdakı əsas məqsəd isə, axtarış xanasındakı (B9) mətn məlumatını rəqəmə çevirməkdir. Mətn formatında olan rəqəmlər üzərində riyazi əməliyyat apardığımız məlumat rəqəmə çevrilir. Bu səbəbdən, ilk arqumentdə dəyəri dəyişməmək şərti ilə riyazi əməlyyat apardım.
Əgər cədvəlimizdəki (baza) məlumatlar qarışıqdırsa (mətn və rəqəm bir yerdə) o zaman köməkçi sütun açıb cədvəldəki məlumatları eyniləşdirdikdən sonra funksiyanı əldə etdiyimiz yeni sütunu görə verməliyik.
Mətnlərdə görünməyən simvolların olması
Verilən cədvəldə əlavə görünməyən simvollar olduğu zaman, “axtarılan dəyər” ilə eyni olmadığına görə axtarış zamanı tapa bilmir. Sağdakı nümunədə, kodlar arasında görüntü olaraq heç bir fərq yoxdur. Ancaq LEN funksiyası ilə yoxladığım zaman iki kodda əlavə simvol olduğunu görürəm. Bu kimi hallar, ERP sistemindən alınan cədvəllərdə ola bilər. Bunun üçün mətnləri səliqəyə salıb daha sonra axtarış verməliyik və ya “axtarış dəyərimizi” bazaya uyğunlaşdırmalıyıq. Mətnlərin düzgün formaya salınmasını əvvəlki yazılardan (1, 2) oxuya bilərsiniz.
Funksiyanın sabitlənməməsi
Funksiyada “axtarılan cədvəl”-ə (ikinci arqument) referans verdiyimiz zaman həmin aralığı sabitləmək yaddan çıxa bilər. Həmin funksiyanı digər xanalara kopyaladığımızda, avtomatik olaraq referans verdiyimiz cədvəlin adresi dəyişəcək. Cədvəl adresi dəyişdiyi üçün də, bəzi məlumatları axtarış cədvəlində tapa bilməyəcək. Bu səbəbdən, axtarış cədvəlimizi hər zaman sabitləmək lazımdır.
Bazaya yeni sütunların əlavə olunması
Funksiyamızı qurduqdan sonra ola bilsin ki biz, baza cədvəlinə yeni sütun əlavə etdik. Əgər üçüncü arqumentə (sütun nömrəsini) rəqəm yazmışıqsa, bu zaman funksiya bizə başqa sütundakı məlumatı gətirəcək. Bunun həll yollarından biri aşağıdakı funksiyadır
=VLOOKUP(H2;$A$1:$B$7;COLUMNS($A$1:$B$1);0)
Burda biz, üçüncü arqumentdə rəqəm yazmaq əvəzinə COLUMNS funksiyasından istifadə etdik. Bu funksiya seçilmiş aralıq üzrə sütun sayısını verır. Bu sayədə, əgər araya sütun əlavə olunsa funksiya həmin aralığı nəzərə alıb istədiyimiz sütun nömrəsini düzgün gətirəcək.