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)        
  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(ج2:أ19 ; 1 ; "Mike"; 3 ; 4 )

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