Menu

VLOOKUP באקסל: נוסחה, דוגמאות ותיקון #N/A

=VLOOKUP(F2,A2:D6,3,FALSE) מחפשת את F2 בעמודה הראשונה של A2:D6 ומחזירה את הערך מהעמודה השלישית באותה שורה. התאמה מדויקת ומשוערת, תיקון #N/A, גיליון אחר, שני קריטריונים.

כל גיליון בעמוד הזה חי: שנו מספר או נוסחה והוא יחושב מחדש.

=VLOOKUP(F2,A2:D6,3,FALSE) מחפשת את הערך שב-F2 בעמודה הראשונה של A2:D6 ומחזירה את הערך מהעמודה השלישית באותה שורה. FALSE בסוף פירושו "התאמה מדויקת בלבד". בחרו מוצר אחר ב-F2 והמחיר משתנה.

מחיר של מוצר
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Pear$1.50
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

לחצו על G2 כדי לראות את הטבלה A2:D6 מסומנת במסגרת. שנו את ה-3 בנוסחה ל-2 ו-G2 יחזיר את הקטגוריה במקום המחיר, כי Category היא העמודה השנייה בטבלה. ההתאמה מתעלמת מגודל האותיות: pear מוצאת את Pear.

התחביר של VLOOKUP

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
ארגומנטמה זהבדוגמה
lookup_valueהערך שמחפשים.F2 (Pear)
table_arrayהטבלה שבה מחפשים. VLOOKUP מחפשת רק בעמודה הראשונה שלה.A2:D6
col_index_numאיזו עמודה של הטבלה להחזיר, כשסופרים מהעמודה הראשונה של הטבלה (1).3 (Price)
range_lookupFALSE או 0 להתאמה מדויקת. TRUE, 1 או כלום להתאמה משוערת.FALSE

מספר העמודה נספר מתחילת הטבלה, לא מעמודה A של הגיליון. בטבלה שמתחילה בעמודה C, col_index_num 2 פירושו עמודה D. מספר גדול מרוחב הטבלה מחזיר #REF!, ו-0 מחזיר #VALUE!.

באקסל שמוגדר לשפה שמשתמשת בפסיק עשרוני, הארגומנטים מופרדים בנקודה פסיק: =VLOOKUP(F2;A2:D6;3;FALSE).

בחירת עמודת ההחזרה עם MATCH

3 קבוע נשבר בשקט כשמישהו מוסיף עמודה בתוך הטבלה: הנוסחה ממשיכה להחזיר את העמודה השלישית, שעכשיו מכילה משהו אחר. תנו ל-MATCH למצוא את מספר העמודה מהכותרת במקום. כאן G1 היא רשימה נפתחת: בחרו Stock או Category ו-G2 מתעדכן בהתאם.

מספר עמודה מתוך הכותרת
G2
ABCDEFG
1ProductCategoryPriceStockLook forPrice
2AppleFruit$1.2040Carrot0.8
3PearFruit$1.5025
4CarrotVegetable$0.8060
5BreadBakery$2.4015
6MilkDairy$1.1030
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

MATCH(G1,A1:D1,0) מחזירה את המיקום של "Price" בשורת הכותרות, 3, ו-VLOOKUP משתמשת בו כמספר העמודה: 0.8 עבור Carrot. זה חיפוש דו־כיווני: שורה שנבחרת לפי מוצר, עמודה שנבחרת לפי כותרת. אותו רעיון כשהוא כתוב עם INDEX במקום VLOOKUP נמצא בעמוד INDEX ו-MATCH.

התאמה משוערת: VLOOKUP עם TRUE

עם TRUE כארגומנט האחרון, VLOOKUP לא מחפשת ערך שווה. היא מוצאת את הערך הגדול ביותר שקטן מערך החיפוש או שווה לו. זה מה שרוצים לטווחים: מדרגות מס, ציונים, תעריפי משלוח, רמות עמלה. העמודה הראשונה חייבת להיות ממוינת מהקטן לגדול.

שיעור עמלה לפי מכירות
F2
ABCDEF
1Sales fromRateRepSalesRate
200%Ana7500%
310003%Ben4,2003%
450005%Cara5,0005%
5100008%Dev12,5008%
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

ה-4,200 של Ben לא נמצא בעמודה A. הערך הגדול ביותר שאינו מעליו הוא 1,000, ולכן הוא מקבל 3%. ה-5,000 של Cara מתאים בדיוק לשורת ה-5,000 ומקבל 5%. ה-12,500 של Dev מעל הרמה האחרונה ומקבל את השיעור האחרון, 8%. ערך מתחת לרמה הראשונה (כאן, נתון מכירות שלילי) מחזיר #N/A, ולכן הטבלה מתחילה ב-0.

סימני ה-$ ב-$A$2:$B$5 משאירים את הטבלה במקומה כש-F2 מועתק למטה עד F5. בלעדיהם, F3 היה מחפש ב-A3:B6 ומדלג על הרמה הראשונה.

השמטת הארגומנט הרביעי זהה ל-TRUE. ברשימת מוצרים לא ממוינת זה באג שקט: אקסל מחפש כאילו הרשימה ממוינת ויכול להחזיר מחיר מהשורה הלא נכונה, או #N/A לערך שנמצא שם. כשמחפשים שמות, קודים או מזהים, סיימו תמיד ב-FALSE.

למה VLOOKUP מחזירה #N/A

#N/A פירושו "לא נמצא". הגיליון למטה מראה שלוש סיבות נפוצות, ועמודה G חוזרת על כל חיפוש כשהוא עטוף ב-IFNA וב-TRIM.

שלושה חיפושים שמחזירים #N/A
F2
ABCDEFG
1ProductCategoryPriceStockLook forPriceFixed
2AppleFruit$1.2040Kiwi#N/ANot found
3PearFruit$1.5025Milk #N/A$1.10
4CarrotVegetable$0.8060Fruit#N/ANot found
5BreadBakery$2.4015
6MilkDairy$1.1030
#N/A הערך שחיפשתם לא נמצא בטווח החיפוש.
  1. הערך לא נמצא בטבלה. Kiwi לא נמצא ב-A2:A6. זה "לא נמצא" אמיתי, ו-IFNA(...,"Not found") הופכת אותו לטקסט קריא. שנו את E2 ל-Apple ושתי העמודות יציגו את המחיר.
  2. רווחים מיותרים. ב-E3 יש "Milk " עם רווח בסוף, ולכן הוא לא שווה ל-Milk. TRIM(E3) מסירה אותו ו-G3 מוצא את המחיר. אם הרווחים נמצאים דווקא בטבלה, נקו את עמודה A עם TRIM פעם אחת ולא בכל חיפוש.
  3. הערך נמצא בעמודה אחרת. Fruit קיים, אבל בעמודה B. VLOOKUP מחפשת רק בעמודה הראשונה של הטבלה, ולכן E4 נכשל בשתי העמודות. התחילו את הטבלה בעמודה שבה אתם מחפשים, או השתמשו ב-XLOOKUP, שמקבלת את עמודת החיפוש ואת עמודת ההחזרה בנפרד.

השתמשו ב-IFNA ולא ב-IFERROR סביב חיפוש. IFNA תופסת רק את #N/A, כך ש-#REF! ממספר עמודה שגוי עדיין מוצג במקום להיות מוסתר כ-"Not found".

עוד שתי סיבות:

  • מספרים שמאוחסנים כטקסט. אם בעמודה A יש קודי מוצר שהוקלדו כטקסט (לרוב אחרי ייבוא, עם משולש ירוק קטן בפינה) וב-F2 יש את המספר 101, =VLOOKUP(F2,A2:B6,2,FALSE) מחזירה #N/A אף ש-101 מופיע ברשימה. המירו צד אחד: =VLOOKUP(F2&"",A2:B6,2,FALSE) מחפשת את הטקסט "101", ו-=VLOOKUP(VALUE(F2),A2:B6,2,FALSE) מחפשת מספר כש-F2 הוא הטקסט.
  • התאמה משוערת על נתונים לא ממוינים, כמו שתואר בסעיף הקודם.

VLOOKUP מחזירה 0 במקום תא ריק

כשהתא ש-VLOOKUP מגיעה אליו ריק, אקסל מציג 0, לא תא ריק. 0 בעמודת Stock נקרא אז כ"אזל מהמלאי" כשהמלאי פשוט לא הוזן. הוסיפו &"" לנוסחה, או בדקו את האורך של התוצאה:

=VLOOKUP(F2,A2:D6,4,FALSE)&""
=IF(LEN(VLOOKUP(F2,A2:D6,4,FALSE))=0,"",VLOOKUP(F2,A2:D6,4,FALSE))

הראשונה קצרה יותר אבל הופכת כל מספר שהיא מחזירה לטקסט, ולכן SUM בהמשך מדלגת עליו. השנייה משאירה מספרים כמספרים.

VLOOKUP מגיליון אחר

כתבו את שם הגיליון ואת ! לפני הטבלה. כשבונים את הנוסחה באקסל, לחצו על הלשונית של הגיליון האחר ובחרו את הטווח: אקסל כותב Prices!A2:B6 בשבילכם. כאן הלשונית Orders מחפשת מחירים בלשונית Prices.

הזמנות שמתומחרות מגיליון Prices
D2
ABCDE
1OrderProductQtyPriceTotal
21001Pear3$1.50$4.50
31002Milk2$1.10$2.20
41003Apple5$1.20$6.00
51004Bread1$2.40$2.40
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

פתחו את הלשונית Prices ושנו את המחיר של Apple: סכום ההזמנה מתעדכן. שני פרטים:

  • שם גיליון עם רווחים צריך גרשיים בודדים: =VLOOKUP(B2,'Price list'!$A$2:$B$6,2,FALSE).
  • טבלה בחוברת עבודה אחרת מוסיפה את שם הקובץ בסוגריים מרובעים, [Prices.xlsx]Prices!$A$2:$B$6. כשהקובץ הזה סגור, אקסל מציג בנוסחה את הנתיב המלא שלו והחיפוש ממשיך לעבוד מהקובץ השמור.

VLOOKUP עם תווים כלליים (התאמה חלקית)

עם FALSE, ערך החיפוש יכול להכיל תווים כלליים: * מייצג כל מספר של תווים ו-? מייצג תו אחד בדיוק. "*"&E2&"*" מוצאת את המוצר הראשון שהשם שלו מכיל את הטקסט שב-E2.

מציאת מוצר לפי חלק מהשם שלו
F2
ABCDEF
1ProductCategoryPriceContainsPrice
2Green teaDrinks$3.20coffee$2.90
3Iced coffeeDrinks$2.90
4Coffee beansPantry$8.50
5Black teaDrinks$2.70
6Orange juiceDrinks$3.40
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

"coffee" מתאים גם ל-Iced coffee וגם ל-Coffee beans; VLOOKUP מחזירה את הראשון מלמעלה, $2.90. שנו את E2 ל-bean כדי לקבל $8.50, או ל-juice. כדי לחפש כוכבית או סימן שאלה אמיתיים, שימו לפניהם טילדה: "~*".

VLOOKUP שמאלה

VLOOKUP לא יכולה להחזיר עמודה שנמצאת משמאל לעמודה שבה היא מחפשת: col_index_num סופר רק ימינה, ומספרים שליליים הם שגיאה. כדי למצוא את המוצר עבור מחיר נתון, חפשו בעמודה C והחזירו את עמודה A עם XLOOKUP או עם INDEX ו-MATCH:

=XLOOKUP(2.4, C2:C6, A2:A6)              Excel 2021 and Microsoft 365
=INDEX(A2:A6, MATCH(2.4, C2:C6, 0))      every version

שתיהן מחזירות Bread על הנתונים של הגיליון הראשון. ב-XLOOKUP יש את ההסבר המלא.

תרגול: עלות משלוח לפי משקל

תעריפי משלוח
E2
ABCDE
1Weight from (kg)CostWeight (kg)Cost
20$4.507
32$6.00
45$9.50
510$14.00
620$22.00
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

תורכם: כל עלות חלה מהמשקל שלה ועד המשקל הבא ברשימה. ב-E2, השתמשו ב-VLOOKUP כדי להחזיר את עלות המשלוח של משקל החבילה שב-D2.

VLOOKUP עם שני קריטריונים

VLOOKUP מקבלת ערך חיפוש אחד. כדי להתאים לפי שתי עמודות, בנו עמודת עזר שמחברת אותן, שימו אותה ראשונה בטבלה, וחפשו את אותו טקסט מחובר. עמודה A למטה היא =B2&"-"&C2 שמועתקת למטה, ולכן היא מכילה Coffee-Small, Coffee-Large וכן הלאה.

מחיר לפי מוצר וגודל
G2
ABCDEFG
1KeyProductSizePriceProductSizePrice
2Coffee-SmallCoffeeSmall$2.50TeaLarge
3Coffee-LargeCoffeeLarge$3.50
4Tea-SmallTeaSmall$2.00
5Tea-LargeTeaLarge$3.00
6Juice-SmallJuiceSmall$3.00
לחצו על תא כדי לראות את הנוסחה שלו. שנו מספר או נוסחה והגיליון יחושב מחדש.

תורכם: עמודה A מחברת מוצר וגודל עם מקף. ב-G2, החזירו את המחיר עבור המוצר שב-E2 והגודל שב-F2.

המפריד חשוב: "Tea"&"Large" נותן TeaLarge, שלא מתאים לשום דבר בעמודה A. ב-Excel 2021 וב-Microsoft 365 אפשר לוותר על עמודת העזר עם =XLOOKUP(1,(B2:B6=E2)*(C2:C6=F2),D2:D6); חיפוש עם כמה קריטריונים מראה את זה ואת הגרסה עם INDEX/MATCH.

שאלות נפוצות

איך עושים VLOOKUP באקסל?

הקלידו =VLOOKUP( ותנו ארבעה ארגומנטים: הערך שמחפשים, הטבלה (העמודה הראשונה שלה חייבת להכיל את הערך הזה), מספר העמודה שתוחזר, ו-FALSE להתאמה מדויקת. =VLOOKUP("Pear",A2:D6,3,FALSE) מוצאת את Pear בעמודה A ומחזירה את הערך מעמודה C של אותה שורה.

מה המשמעות של TRUE או FALSE בסוף VLOOKUP?

FALSE (או 0) מבקשת התאמה מדויקת ומחזירה #N/A כשהערך חסר. TRUE (או 1, או השמטת הארגומנט) מבקשת התאמה משוערת: הערך הגדול ביותר שקטן מערך החיפוש או שווה לו, וזה עובד רק כשהעמודה הראשונה ממוינת בסדר עולה.

למה ה-VLOOKUP שלי מחזירה #N/A?

הערך לא נמצא בעמודה הראשונה של הטבלה. הסיבות הרגילות הן שגיאת הקלדה, רווח מיותר ("Milk " אינו "Milk"), מספר שמאוחסן כטקסט רק בצד אחד, או ערך שנמצא בעמודה אחרת. עטפו את הנוסחה ב-IFNA כדי להציג טקסט משלכם: =IFNA(VLOOKUP(F2,A2:D6,3,FALSE),"Not found").

האם VLOOKUP יכולה לחפש שמאלה?

לא. VLOOKUP מחזירה רק עמודות שמימין לעמודה הראשונה של הטבלה. השתמשו ב-=XLOOKUP(F2,C2:C6,A2:A6) ב-Excel 2021 או ב-Microsoft 365, או ב-=INDEX(A2:A6,MATCH(F2,C2:C6,0)) בכל גרסה.

איך עושים VLOOKUP מגיליון אחר?

כתבו את שם הגיליון וסימן קריאה לפני הטווח: =VLOOKUP(B2,Prices!$A$2:$B$6,2,FALSE). אם בשם הגיליון יש רווח, עטפו אותו בגרשיים בודדים: 'Price list'!$A$2:$B$6.

איור של שפות התכנות ב-Coddy

ללמוד תכנות עם Coddy

להתחיל