TOP

وظيفة محسنة VLOOKUP (VLOOKUP2)

وصف

تعد الوظيفة المضمنة VLOOKUP واحدة من أقوى الوظائف في Excel. لكن لديها عيبًا واحدًا مهمًا - فهي تجد التواجد الأول فقط للقيمة المطلوبة في الجدول وفي العمود الموجود في أقصى اليمين فقط. ولكن إذا كنت بحاجة إلى الثاني والثالث وليس الأخير؟


مثال على مشكلة

لنفترض أن لدينا جدولًا للقروض المعالجة مثل هذا:

نحتاج أن نعرف، على سبيل المثال، ما هو مبلغ القرض الثالث الذي تم إصداره لمايك أو متى نفذ جون اتفاقيته الثانية. وظيفة مدمجة VLOOKUP يعرف كيفية البحث فقط في أول ظهور لاسم في الجدول ولن يساعدنا.

لنكتب دالتنا، التي لن تبحث فقط عن الحدث الأول، بل أيضًا عن أي حدث لاحق (Nth). دعنا نسميها، على سبيل المثال، VLOOKUP2.

VBA كود الدالة VLOOKUP2

افتح القائمة الخدمة - ماكرو - المحرر Visual Basic , أدخل الوحدة الجديدة (قائمة طعام Inser - Module ) وانسخ نص هذه الوظيفة هناك:

Function VLOOKUP2(Table           As Range, _
                  SearchColumnNum As Integer, _
                  SearchValue     As Variant, _
                  N               As Integer, _
                  ResultColumnNum As Integer)        
  'moonexcel.com.ua
  Dim i      As Integer
  Dim iCount As Integer
       
  For 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
End Function 

أغلق المحرر Visual Basic والعودة إلى Excel.

في هذه اللحظة معالجات الوظائف في هذه الفئة تعريف المستخدم يمكنك العثور على وظيفة VLOOKUP2 الخاصة بنا واستخدامها. بناء جملة الدالة كما يلي:

=VLOOKUP2( طاولة ; column_number_where_we_search ; searched_value; رقم الدخول ; column_number_from_what_we_take_the_value )

أي أنه من أجل العثور على مبلغ القرض الثالث الصادر لمايك، ستحتاج إلى إدخال:

=VLOOKUP2(A2:A19; 1; "Mike"; 3; 4)

مقالات حول الموضوع: