تعد الوظيفة المضمنة VLOOKUP واحدة من أقوى الوظائف في Excel. لكن لديها عيبًا واحدًا مهمًا - فهي تجد التواجد الأول فقط للقيمة المطلوبة في الجدول وفي العمود الموجود في أقصى اليمين فقط. ولكن إذا كنت بحاجة إلى الثاني والثالث وليس الأخير؟
لنفترض أن لدينا جدولًا للقروض المعالجة مثل هذا:
نحتاج أن نعرف، على سبيل المثال، ما هو مبلغ القرض الثالث الذي تم إصداره لمايك أو متى نفذ جون اتفاقيته الثانية. وظيفة مدمجة VLOOKUP يعرف كيفية البحث فقط في أول ظهور لاسم في الجدول ولن يساعدنا.
لنكتب دالتنا، التي لن تبحث فقط عن الحدث الأول، بل أيضًا عن أي حدث لاحق (Nth). دعنا نسميها، على سبيل المثال، 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)