שיפור הפונקציה VLOOKUP

תוכן

איך לארוז נכון מצנח?

תועלת. מהדורה 2, מתוקנת.

נניח שיש לנו את טבלת הסדרים הבאה:

שיפור הפונקציה VLOOKUP

אנחנו צריכים לדעת, למשל, מה היה סכום ההזמנה השלישית של איבנוב או מתי פטרוב ביצע את העסקה השנייה שלו. פונקציית VLOOKUP המובנית יכולה לחפש רק את המופע הראשון של שם המשפחה בטבלה ולא תעזור לנו. שאלות כמו "מי היה המנהל של הזמנה מספר 10256?" גם יישאר ללא מענה, tk. ה-VLOOKUP המובנה אינו מסוגל להחזיר ערכים מהעמודות משמאל לחיפוש.

שתי הבעיות הללו נפתרות במכה אחת – בואו נכתוב פונקציה משלנו שתחפש לא רק את ההתרחשות הראשונה, אלא, במקרה הכללי, את ההתרחשות ה-N. יתרה מכך, הוא יוכל לחפש ולהפיק תוצאות בכל עמודה. בואו נקרא לזה, נניח, VLOOKUP2. 

פתח את עורך Visual Basic על ידי לחיצה על ALT+F11 או על ידי בחירה מהתפריט שירות – מאקרו – עורך Visual Basic (כלים - מאקרו - עורך Visual Basic), הכנס מודול חדש (תפריט הכנס - מודול) והעתיקו לשם את הטקסט של הפונקציה הזו:

פונקציה VLOOKUP2(Table As Variant, SearchColumnNum As Long, SearchValue As Variant, _ N As Long, ResultColumnNum As Long) Dim i As Long, iCount As Long בחר Case TypeName(Table) Case "Range" עבור i = 1 To Table.Rows .Count If Table.Cells(i, SearchColumnNum) = SearchValue Then iCount = iCount + 1 End If If iCount = N Then VLOOKUP2 = Table.Cells(i, ResultColumnNum) Exit For End If Next i Case "Variant()" עבור i = 1 ל-Ubound(Table) If Table(i, SearchColumnNum) = SearchValue אז iCount = iCount + 1 אם iCount = N אז VLOOKUP2 = Table(i, ResultColumnNum) יציאה לסוף אם הבא i End בחר פונקציית סיום  

סגור את עורך Visual Basic וחזור לאקסל.

עכשיו דרך הכנס - פונקציה (הוסף - פונקציה) בקטגוריה משתמש הוגדר (משתמש הוגדר) אתה יכול למצוא את פונקציית VLOOKUP2 שלנו ולהשתמש בה. תחביר הפונקציה הוא כדלקמן:

=VLOOKUP2(טבלה; מספר_העמודה_היכן_אנחנו מחפשים; ערך_חיפוש; N; מספר_העמודה_מ_לקבל_ערך)

כעת המגבלות של הפונקציה הסטנדרטית אינן מפריעות לנו:

שיפור הפונקציה VLOOKUP

PS תודה מיוחדת ל-The_Prist על שיפור הפונקציה כך שתוכל לחפש בספרים סגורים.

  • איתור והחלפת נתונים מטבלה אחת לאחרת באמצעות הפונקציה VLOOKUP
  • "Left VLOOKUP" באמצעות הפונקציות INDEX ו-MATCH

 

השאירו תגובה