INDEX MATCH ב-Excel: נוסחה, דוגמאות ושגיאות נפוצות
By Mirko Peters ·
INDEX MATCH ב-Excel מוסבר: הנוסחה, אופן פעולת כל פונקציה, חיפוש שמאלה וחיפוש דו-ממדי, שימוש בשני קריטריונים ושגיאות נפוצות, כולל השוואה ל-VLOOKUP.
Automatically translated with AI from the original post. Read the English original
INDEX MATCH ב-Excel הוא נוסחת חיפוש המורכבת משתי פונקציות: =INDEX(return_range, MATCH(lookup_value, lookup_range, 0)). MATCH מאתר היכן נמצא הערך שלכם ברשימה, ו-INDEX מחזיר את הפריט שנמצא באותו מיקום ברשימה אחרת. המאמר מיועד למשתמשי Excel שכותבים נוסחאות VLOOKUP ונתקלים במגבלות שלה, או למי שירש חוברת עבודה מלאה ב-INDEX MATCH ורוצה להבין אותה. תכירו כל פונקציה בנפרד, איך הן משתלבות, איך לחפש שמאלה, איך לבצע חיפוש דו-ממדי, איך להשתמש בשני קריטריונים, ומה משמעות השגיאות.
עיקרי הדברים
- INDEX MATCH הן שתי פונקציות בתוך נוסחה אחת: =INDEX(return_range, MATCH(lookup_value, lookup_range, 0)). MATCH מאתרת את המיקום, ו-INDEX מחזירה את הפריט שנמצא במיקום הזה.
- השתמשו ב-0 כארגומנט השלישי של MATCH להתאמה מדויקת. כאשר משאירים את ברירת המחדל 1, MATCH מניח שהנתונים ממוינים בסדר עולה.
- מכיוון שטווח החיפוש וטווח ההחזרה נפרדים, INDEX MATCH יכולה לחפש משמאל לעמודת החיפוש, מה ש-VLOOKUP אינה יכולה לעשות.
- לשני תנאים, או שמחברים את העמודות בעמודת עזר, או שמשתמשים בנוסחה שמכפילה שתי השוואות בתוך MATCH.
- עטפו את הנוסחה ב-IFNA כדי להחליף את #N/A בהודעה, כך ששגיאות אחרות ימשיכו להופיע ושטעויות אמיתיות לא יוסתרו.
תמצאו את INDEX MATCH בחוברות עבודה רבות ישנות, מכיוון שהיא עבדה בכל גרסה של Excel הרבה לפני שקיימת XLOOKUP. היא עדיין עובדת, וזו הסיבה העיקרית ללמוד אותה. הפרטים שלהלן מבוססים על דפי התמיכה של Microsoft בנושא MATCH, INDEX ו-VLOOKUP.
מה עושה INDEX
INDEX מחזיר ערך ממיקום מסוים בתוך טווח. דף Microsoft מציג את הצורה של מערך כ-INDEX(array, row_num, [column_num]).
arrayהוא הטווח שממנו לוקחים את הערך.row_numהוא השורה בתוך הטווח הזה.column_numהוא העמודה בתוך הטווח הזה. אם לטווח יש עמודה אחת בלבד, אפשר להשמיט אותו.
המספרים נספרים מהתא שמימין למעלה בטווח, ולא מהגיליון. בדוגמה של Microsoft יש בלוק עם Apples ו-Bananas בעמודה הראשונה ו-Lemons ו-Pears בעמודה השנייה. =INDEX(A2:B3,2,2) מחזירה את Pears, ו-=INDEX(A2:B3,2,1) מחזירה את Bananas.
שני כללים מאותו דף כדאי לזכור. אם row_num או column_num מצביעים מחוץ לטווח, INDEX מחזיר שגיאה #REF!. ואם מגדירים את row_num או column_num לערך 0, INDEX מחזיר את כל העמודה או השורה. ב-Microsoft 365 העדכנית לוחצים על Enter כרגיל. בגרסאות ישנות יותר מזינים אותה כנוסחת מערך באמצעות Ctrl+Shift+Enter.
לבדו, INDEX דורש שתדעו את המיקום מראש. כאן נכנסת לתמונה MATCH.
מה עושה MATCH
MATCH מחפש בטווח ומחזיר מיקום. Microsoft מציגה את התחביר כ-MATCH(lookup_value, lookup_array, [match_type]). הפונקציה אינה מחזירה את הפריט עצמו, אלא רק את מיקומו היחסי בטווח.
הארגומנט השלישי קובע את אופן ההתאמה:
0מוצא את ההתאמה המדויקת הראשונה. הטווח יכול להיות בכל סדר. זו האפשרות שתשתמשו בה לרוב.1, שהוא גם ברירת המחדל אם משמיטים את הארגומנט, מוצא את הערך הגדול ביותר שקטן או שווה לערך החיפוש. הטווח חייב להיות ממוין בסדר עולה.-1מוצא את הערך הקטן ביותר שגדול או שווה לערך החיפוש. הטווח חייב להיות ממוין בסדר יורד.
הדוגמאות של Microsoft משתמשות בערכים 25, 38, 40 ו-41 בתא B2:B5. =MATCH(39,B2:B5,1) מחזירה 2, המיקום של 38, הערך הנמוך הקרוב ביותר. =MATCH(41,B2:B5,0) מחזירה 4. ו-=MATCH(40,B2:B5,-1) מחזירה #N/A, כי הערכים האלה אינם ממוינים בסדר יורד.
עוד כמה התנהגויות מהדף: התאמת טקסט אינה רגישה לאותיות רישיות, כך ש-"apple" ו-"APPLE" הם אותו ערך. עם סוג התאמה 0 וערך חיפוש טקסטואלי, ? תואם לכל תו בודד ו-* תואם לכל רצף של תווים, וסימן טילדה לפני אחד מהם מחפש את התו המילולי. אם MATCH אינה מוצאת דבר, היא מחזירה #N/A.
ברירת המחדל של 1 מבלבלת אנשים. אם משמיטים את הארגומנט השלישי, MATCH מניחה בשקט שהנתונים ממוינים, ויכולה להחזיר מיקום שגוי בלי שתופיע שגיאה. ברוב החיפושים של מזהים, שמות או קודים, הקלידו 0.
נשלב הכול יחד
התבנית תמיד זהה: MATCH נכנסת בתוך INDEX ומספקת את מספר השורה.
=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
נניח גיליון עם מזהי עובדים בתא A2:A100, שמות בתא B2:B100 ומחלקות בתא C2:C100. אתם מקלידים מזהה בתא F2 ורוצים את המחלקה.
- לחצו על התא שבו תופיע התוצאה, למשל G2.
- הקלידו
=INDEX(C2:C100,כדי לציין מאיפה מגיעה התשובה. - הוסיפו
MATCH(F2,A2:A100,0))כדי לציין היכן למצוא את המזהה. - לחצו על Enter.
הנוסחה המוגמרת היא =INDEX(C2:C100,MATCH(F2,A2:A100,0)). MATCH מוצאת את F2 בתוך A2:A100 ומחזירה, למשל, 14. לאחר מכן INDEX מחזירה את הפריט הארבע-עשרה ב-C2:C100.
שמרו על אורך זהה ועל שורת התחלה זהה לטווחים. אם MATCH מחפשת ב-A2:A100 ו-INDEX קוראת מ-C3:C101, המיקום מצביע על שורה שגויה והתשובה שגויה בשקט. השתמשו באותן שורות התחלה וסיום לשניהם, ונעלו אותן בסימני דולר, $A$2:$A$100, אם אתם מתכננים להעתיק את הנוסחה למטה.
חיפוש שמאלה, ומה משתנה לעומת VLOOKUP
דף VLOOKUP של Microsoft מציג את התחביר כ-VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup]). הדף מציין שערך החיפוש חייב להימצא בעמודה הראשונה של הטווח, ושהשמטת range_lookup מניבה התאמה משוערת, שמניחה נתונים ממוינים. הדף גם מציע לנסות את XLOOKUP.
הנה אותה משימה בשתי דרכים, כשמזהים נמצאים בעמודה A ושמות בעמודה B:
=VLOOKUP(F2,A2:B100,2,FALSE)=INDEX(B2:B100,MATCH(F2,A2:A100,0))
ל-INDEX MATCH יש שני יתרונות ממשיים. ראשית, היא יכולה לחפש שמאלה. אם השמות נמצאים בעמודה B ואתם רוצים לקבל בחזרה את המזהה מעמודה A, פשוט מחליפים את הטווחים: =INDEX(A2:A100,MATCH(F2,B2:B100,0)). VLOOKUP אינה יכולה לעשות זאת, כי ערך החיפוש שלה חייב להיות בעמודה הראשונה. שנית, היא מפנה ישירות לעמודת ההחזרה, במקום לספור. ב-VLOOKUP, המספר 2 בנוסחה פירושו "העמודה השנייה בטווח". אם מוסיפים עמודה בתוך הטווח, המספר מצביע על עמודה אחרת. ב-INDEX MATCH ההפניה מתעדכנת כמו כל הפניה אחרת.
תקראו גם שINDEX MATCH מהירה יותר. דפי Microsoft אינם טוענים זאת, וכל הפרש כזה משמעותי רק בחוברות עבודה גדולות מאוד, ולכן אל תבחרו בה למען המהירות. בחרו בה למען הגמישות.
חיפושים דו-כיווניים
חיפוש דו-כיווני מוצא את הערך שבו שורה ועמודה נפגשות, למשל המכירות של מוצר אחד בחודש אחד. השתמשו בשתי פונקציות MATCH, אחת לשורה ואחת לעמודה:
=INDEX(B2:M20,MATCH(P1,A2:A20,0),MATCH(Q1,B1:M1,0))
כאן B2:M20 מכיל את המספרים, A2:A20 מכיל את שמות המוצרים, B1:M1 מכיל את כותרות החודשים, ו-P1 ו-Q1 מחזיקים את המוצר והחודש שאתם מחפשים. ה-MATCH הראשון מחזיר את השורה, ה-MATCH השני מחזיר את העמודה, ו-INDEX מחזיר את המספר במפגש ביניהן. שימו לב שטווח ההחזרה מתחיל ב-B2 ולא ב-A1, כך שהמיקומים מתיישרים עם טווחי התוויות: גם טווחי ה-MATCH מתחילים באותה שורה או באותה עמודה כמו המספרים.
התאמה לפי שני קריטריונים
MATCH מקבל ערך חיפוש אחד. אם רשומה מזוהה רק לפי שני שדות, כמו קטגוריה וסטטוס, יש לכם שתי אפשרויות.
עמודת עזר. הוסיפו עמודה שמחברת את שני השדות, למשל =A2&"|"&B2 בתא D2, ומשכו אותה למטה. לאחר מכן חפשו את הטקסט המחובר:
=INDEX(C2:C100,MATCH(F2&"|"&G2,D2:D100,0))
המפריד חשוב. בלעדיו, "AB" ועוד "C" וגם "A" ועוד "BC" יהפכו שניהם ל-"ABC". עמודת העזר קלה לקריאה ולבדיקה, ועובדת בכל גרסה.
נוסחת מערך. בלי עמודת עזר, אפשר להכפיל שתי השוואות:
=INDEX(C2:C100,MATCH(1,(A2:A100=F2)*(B2:B100=G2),0))
כל השוואה מחזירה TRUE או FALSE. הכפל הופך אותן ל-1 רק במקומות שבהם שתי ההשוואות מתקיימות, ו-MATCH מחפש את ה-1 הראשון. דף INDEX ו-MATCH של Microsoft אינו מתעד שיטה זו, ולכן בדקו אותה על טווח קטן. בגרסאות ישנות של Excel ייתכן שתצטרכו להזין אותה עם Ctrl+Shift+Enter, כפי ש-Microsoft מתארת לתוצאות מערך של INDEX. ב-Microsoft 365 העדכנית, Enter מספיק.
תווים כלליים וערכים קרובים
עם סוג התאמה 0 וטקסט, MATCH תומך בתווים כלליים. =INDEX(B2:B100,MATCH("Jan*",A2:A100,0)) מחזיר את הפריט שלצד הערך הראשון שמתחיל ב-"Jan". זה שימושי לקודים חלקיים. שמרו על תבנית ספציפית, כי MATCH עוצר בהתאמה הראשונה.
לדרגות כמו מדרגות מס או טווחי עמלות, השתמשו בכוונה בסוג ההתאמה ברירת המחדל 1, כאשר הסף ממוין בסדר עולה. הזינו 0, 1000 ו-5000 בתאים A2:A4 והשיעורים בתאים B2:B4, ו-=INDEX(B2:B4,MATCH(E2,A2:A4,1)) מחזיר את השיעור של הסף הגבוה ביותר שאינו עולה על E2. זו אחת המשימות הבודדות שבהן הברירת מחדל הממוינת היא הבחירה הנכונה.
תיקון שגיאות
- #N/A. MATCH לא מצא דבר. חפשו שגיאות כתיב, רווחים מיותרים בסוף הטקסט ומספרים שמאוחסנים כטקסט, שכן "100" ו-100 הם ערכים שונים. בדקו שסוג ההתאמה הוא 0, ושסוגי התאמה למידע ממוין (1 או -1) אכן עובדים על נתונים ממוינים.
- #REF!. INDEX התבקש לשורה או לעמודה מחוץ לטווח. זה קורה גם כשמוחקים שורה או עמודה שהנוסחה משתמשת בהן. בדקו שטווח ה-MATCH וטווח ה-INDEX הם באותו גודל.
- תשובה שגויה ללא שגיאה. בדרך כלל חסר 0 ב-MATCH, או שהטווחים מתחילים בשורות שונות.
- תשובה שגויה לאחר העתקה למטה. הטווחים זזו כי לא היו נעולים. הוסיפו
$לטווחים.
כדי להחליף שגיאה בהודעה, הפונקציה IFNA של Microsoft מחזירה ערך שתבחרו כאשר נוסחה מחזירה #N/A, ומעבירה כל שגיאה אחרת ללא שינוי:
=IFNA(INDEX(C2:C100,MATCH(F2,A2:A100,0)),"לא נמצא")
העדיפו את IFNA על פני IFERROR בחיפושים. IFERROR מסתיר כל שגיאה, כולל #REF! שנגרם מטווח שבור, ולכן תקלה אמיתית נראית כמו "לא נמצא" רגיל. IFNA מטפל רק במקרה שציפיתם לו. Microsoft מציינת את IFNA עבור Excel 2016 ומעלה.
INDEX MATCH או XLOOKUP
אם לכל מי שפותח את הקובץ יש Microsoft 365 עדכני, XLOOKUP עושה את אותה עבודה עם פונקציה אחת והודעת "לא נמצא" מובנית. אנחנו מכסים אותה במדריך שלנו ל-XLOOKUP ב-Excel. אבל דף XLOOKUP של Microsoft אינו ברור לגבי Excel 2016 ו-2019, והוא אינו מציין את Excel for the web. INDEX MATCH עובד בכולן. לכן הבחירה מעשית: השתמשו ב-XLOOKUP בקבצים לגרסאות עדכניות, וב-INDEX MATCH כשהקובץ מועבר לאנשים עם גרסאות ישנות יותר, או כשאתם מתחזקים חוברת עבודה שכבר משתמשת בה.
טעויות נפוצות
- השמטת ה-
0ב-MATCH ובטחון בברירת המחדל. - שימוש בטווחים בגדלים שונים או בשורות התחלה שונות עבור INDEX ו-MATCH.
- שכחה לנעול טווחים עם
$לפני העתקת הנוסחה למטה. - חיבור קריטריונים בלי מפריד בעמודת עזר.
- עטיפת הכול ב-IFERROR, כך שנוסחאות שבורות נראות כמו נתונים חסרים.
- צפייה ש-INDEX MATCH יחזיר את כל ההתאמות. הוא מחזיר רק את הראשונה.
נושאים קשורים לעיון
- XLOOKUP. פונקציית החיפוש החדשה יותר, עם כיוון חיפוש וארגומנט לטיפול במקרה שלא נמצא ערך מובנים.
- מספר תוצאות בבת אחת. INDEX MATCH מחזיר רק את ההתאמה הראשונה. לצורך החזרת כל ההתאמות, בגרסאות שכוללות אותה, יש להשתמש בפונקציה FILTER.
- טבלאות וטווחים בעלי שם. הפניות מובְנות ושמות לטווחים הופכים חיפושים לקריאים יותר, ומאפשרים לטווח להתרחב יחד עם הנתונים שלכם.
- ביצועים בגיליונות גדולים. השתמשו בטווחים מוגבלים במקום בעמודות שלמות, ושמרו על הטווחים מדויקים וצרים.
- חיפושים תלויי רישיות. MATCH מתעלם מהבדל בין אותיות גדולות לקטנות, ולכן חיפוש שתלוי ברישיות דורש גישה אחרת. בדקו כל פתרון עוקף לפני שתסתמכו עליו.
הצעד הבא
כתבו מחדש אחת מנוסחאות VLOOKUP שלכם בעזרת INDEX MATCH, והשוו את התוצאה על כמה ערכים שאתם מכירים. לאחר מכן נסו את אותה נוסחה עם חיפוש לשמאל. לאחר ששניכם עשיתם את שתי הבדיקות, תדעו מתי INDEX MATCH ב-Excel הוא הכלי המתאים יותר למשימה.