VLOOKUP في Excel VBA | كيف تكتب كود VLOOKUP في VBA؟

Vlookup هي وظيفة ورقة عمل في Excel ولكن يمكن استخدامها أيضًا في VBA ، تشبه وظيفة Vlookup الوظيفة الموجودة في VBA وفي ورقة العمل على حد سواء ، نظرًا لأنها وظيفة ورقة عمل ، فإن طريقة استخدام Vlookup في VBA هي من خلال التطبيق. الطريقة والحجج تبقى كما هي.

وظيفة VLOOKUP في Excel VBA

تُستخدم الدالة VLOOKUP في Excel للبحث عن قيمة في مصفوفة وإرجاع قيمتها المقابلة من عمود آخر. يجب أن تكون القيمة المراد البحث عنها موجودة في العمود الأول. مطلوب أيضًا ذكر ما إذا كنت تريد البحث عن تطابق تام أو تطابق تقريبي. يمكن استخدام دالة ورقة العمل VLOOKUP في ترميز VBA. لم يتم إنشاء الوظيفة في VBA وبالتالي لا يمكنها الاتصال إلا باستخدام ورقة العمل.

تحتوي وظيفة VLOOKUP في Excel على بناء الجملة التالي:

حيث ، lookup_value هي القيمة التي يجب البحث عنها ، و table_arrray هو الجدول ، و col_index_num هو رقم عمود القيمة المرجعة ، و range_lookup يشير إلى ما إذا كانت المطابقة تامة أو تقريبية. يمكن أن يكون range_lookup هو TRUE / FALSE أو 0/1.

في كود VBA ، يمكن استخدام وظيفة VLOOKUP على النحو التالي:

Application.WorksheetFunction.vlookup (lookup_value ، table_array ، col_index_num ، range_lookup)

كيفية استخدام VLookup في Excel VBA؟

فيما يلي بعض الأمثلة على VLookup Code في Excel VBA.

يمكنك تنزيل VLookup هذا في Excel VBA Template هنا - VLookup في Excel VBA Template

كود VLookup في Excel VBA مثال # 1

دعونا نرى كيف يمكننا استدعاء وظيفة ورقة العمل VLOOKUP في Excel VBA.

لنفترض أن لديك بيانات معرف الطلاب واسمهم ومتوسط ​​العلامات التي حصلوا عليها.

الآن ، تريد البحث عن العلامات التي حصل عليها الطالب برقم تعريف 11004.

للبحث عن القيمة ، اتبع الخطوات التالية:

  • انتقل إلى علامة تبويب المطور وانقر فوق Visual Basic.

  • ضمن نافذة VBA ، انتقل إلى إدراج وانقر فوق الوحدة النمطية.

  • الآن ، اكتب كود VBA VLOOKUP. يمكن استخدام رمز VBA VLOOKUP التالي.

فرعي vlookup1 ()

قاتمة student_id طالما

علامات قاتمة على أنها طويلة

معرف الطالب = 11004

تعيين myrange = Range ("B4: D8")

العلامات = Application.WorksheetFunction.VLookup (student_id ، myrange ، 3 ، False)

End Sub

أولاً ، حدد معرف الطالب ، وهو القيمة التي يجب البحث عنها. لذلك ، نحدد ،

معرف الطالب = 11004

بعد ذلك ، نحدد النطاق الذي توجد فيه القيمة وقيمة الإرجاع. نظرًا لوجود بياناتنا في الخلايا B4: D8 ، فإننا نحدد النطاق - myrange على النحو التالي:

تعيين myrange = Range ("B4: D8")

أخيرًا ، أدخلنا وظيفة VLOOKUP باستخدام وظيفة ورقة العمل في متغير ، ونضع علامة على النحو التالي:

العلامات = Application.WorksheetFunction.VLookup (student_id ، myrange ، 3 ، False)

من أجل طباعة العلامات في مربع رسالة ، دعنا نستخدم الأمر التالي:

MsgBox "Student with ID:" & student_id & "حصل" وعلامات & "علامات"

ستعود:

- الطالب بالرقم 11004 حصل على 85 درجة.

الآن ، انقر فوق زر التشغيل.

ستلاحظ ظهور مربع رسالة في ورقة Excel.

كود VLookup في Excel VBA مثال # 2

افترض أن لديك بيانات أسماء الموظفين ورواتبهم. يتم إعطاء هذه البيانات العمودين B و C. الآن ، تحتاج إلى كتابة رمز VBA VLOOKUP بحيث يتم عرض اسم الموظف في الخلية ، F4 ، سيتم إرجاع راتب الموظف في الخلية G4.

دعونا نكتب كود VBA VLOOKUP.

  1. حدد النطاق الذي توجد فيه القيم ، على سبيل المثال ، العمود B و C.

تعيين myrange = Range ("B: C")

  1. حدد اسم الموظف وأدخل الاسم من الخلية F4.

تعيين الاسم = النطاق ("F4")

  1. حدد الراتب على أنه الخلية G4.

تحديد الراتب = النطاق ("G4")

  1. الآن ، اتصل بوظيفة VLOOKUP باستخدام دالة ورقة العمل في VBA وأدخلها في الراتب. سيؤدي هذا إلى إرجاع القيمة (ناتج وظيفة Vlookup) في الخلية G4. يمكن استخدام الصيغة التالية:

راتب.قيمة = Application.WorksheetFunction.VLookup (الاسم ، myrange ، 2 ، False)

  1. الآن ، قم بتشغيل الوحدة النمطية. ستحتوي الخلية G4 على راتب الموظف بعد تشغيل كود VBA VLOOKUP.

لنفترض أنك قمت بتغيير قيمة الخلية F4 إلى "ديفيد" في ورقة العمل وأعدت تشغيل الكود ، فسوف يُرجع راتب ديفيد.

كود VLookup في Excel VBA مثال # 3

لنفترض أن لديك بيانات الموظف في شركتك ، مع معرفته وأسمائه وقسمه وراتبه. باستخدام Vlookup في VBA ، تريد الحصول على تفاصيل راتب الموظف باستخدام اسمه وقسمه.

نظرًا لأن وظيفة vlookup في Excel تبحث عن lookup_value في عمود واحد فقط ، وهو العمود الأول من table_array ، يلزمك أولاً إنشاء عمود يحتوي على "الاسم" و "القسم" لكل موظف.

في VBA ، دعنا ندرج القيمتين "Name" و "Department" في العمود B من ورقة العمل.

للقيام بذلك ، انتقل إلى علامة التبويب المطور وانقر فوق Visual Basic. ثم انتقل إلى "الإدراج" وانقر فوق "الوحدة النمطية" لبدء وحدة نمطية جديدة.

دعونا الآن نكتب رمزًا ، مثل أن يحتوي العمود B على قيم العمود D (الاسم) والعمود E.

يتم إعطاء بناء الجملة على النحو التالي:

أولاً ، استخدم حلقة 'for' من i = 4 لأن القيم تبدأ من الصف الرابع في هذه الحالة. ستستمر الحلقة حتى نهاية الصف الأخير من العمود C. لذلك ، يمكن استخدام المتغير i كرقم صف داخل الحلقة "for".

ثم أدخل القيمة المراد تعيينها للخلية (row_number ، العمود B) ، والتي يمكن تقديمها كخلايا (i ، "B"). القيمة ، مثل الخلية (row_number ، العمود D) و "_" والخلية (row_number ، العمود E ).

لنفترض أنك تريد تعيين الخلية B5 = D5 & "_" & E5 ، يمكنك ببساطة استخدام الرمز كما يلي:

الخلايا (5 ، "B"). القيمة = خلايا (5 ، "D"). القيمة & "_" والخلايا (5 ، "E"). القيمة

الآن ، دعنا نبحث عن قيمة البحث في المصفوفة B5: E24 ، تحتاج أولاً إلى إدخال قيمة البحث. لنأخذ القيمة (الاسم والقسم) من المستخدم. لفعل هذا،

  1. تحديد ثلاثة متغيرات ، الاسم ، القسم و lookup_val كسلسلة.
  2. خذ إدخال الاسم من المستخدم. استخدم الكود:

name = InputBox ("أدخل اسم الموظف")

سيتم عرض المحتوى الموجود في مربع الإدخال "أدخل .." في مربع المطالبة عند تشغيل الرمز. سيتم تعيين السلسلة التي تم إدخالها في المطالبة إلى متغير الاسم.

  1. خذ القسم من المستخدم. يمكن أن يتم بالمثل كما هو مذكور أعلاه.

Department = InputBox (“أدخل قسم الموظف”)

  1. عيّن الاسم والقسم باستخدام "_" كفاصل للمتغير lookup_val باستخدام الصيغة التالية:

lookup_val = الاسم والقسم "_"

  1. اكتب صيغة vlookup للبحث عن lookup_val في النطاق B5: E24 وقم بإعادته براتب متغير.

تهيئة الراتب المتغير:

راتب خافت طويل

استخدم وظيفة Vlookup للعثور على lookup_val. يمكن إعطاء table_array على أنه النطاق ("B: F") والراتب موجود في العمود الخامس. وبالتالي يمكن استخدام الصيغة التالية:

الراتب = Application.WorksheetFunction.VLookup (lookup_val، Range (“B: F”)، 5، False)

  1. لطباعة الراتب في مربع رسالة ، استخدم بناء الجملة:

MsgBox (راتب الموظف "والراتب)

الآن ، قم بتشغيل الكود. سيظهر مربع موجه في ورقة العمل حيث يمكنك إدخال الاسم. بعد إدخال الاسم (قل ساشي) وانقر فوق موافق.

سيفتح مربعًا آخر يمكنك من خلاله الدخول إلى القسم. بعد دخول القسم ، قل "تكنولوجيا المعلومات".

سيتم طباعة راتب الموظف.

إذا تمكنت Vlookup من العثور على أي موظف بالاسم والقسم ، فسوف يعطي خطأ. لنفترض أنك أعطيت الاسم "Vishnu" والقسم "IT" ، فسيعرض خطأ وقت التشغيل "1004".

لمعالجة هذه المشكلة ، يمكنك تحديد ذلك في هذا النوع من الخطأ ، اطبع "القيمة غير موجودة" بدلاً من ذلك. لفعل هذا،

  1. قبل استخدام صيغة vlookup ، استخدم الكود التالي-

في رسالة الانتقال إلى الخطأ

الشيك:

ستتم مراقبة الكود اللاحق (للشيك :) ، وإذا تلقى أي خطأ ، فسيذهب إلى عبارة "message"

  1. في نهاية الكود (قبل End Sub) ، حدد أنه إذا كان رقم الخطأ هو 1004 ، ثم اطبع في مربع الرسالة "بيانات الموظف غير موجودة". يمكن القيام بذلك باستخدام بناء الجملة:

رسالة:

إذا كان Err.Number = 1004 ثم

MsgBox ("بيانات الموظف غير موجودة")

إنهاء إذا

وحدة 1:

Sub vlookup3 ()

بالنسبة إلى i = 4 To Cells (Rows.Count، “C”). End (xlUp) .Row

الخلايا (i ، "B"). القيمة = الخلايا (i ، "D"). القيمة & "_" والخلايا (i ، "E"). القيمة

اسم iDim التالي كسلسلة

قسم خافت كسلسلة

خافت lookup_val كسلسلة

راتب خافت باسم Longname = InputBox ("أدخل اسم الموظف")

Department = InputBox (“أدخل قسم الموظف”)

lookup_val = name & “_” & departmentOn Error GoTo Message

التحقق من:

الراتب = Application.WorksheetFunction.VLookup (lookup_val، Range (“B: F”)، 5، False)

رسالة MsgBox ("راتب الموظف" والراتب):

إذا كان Err.Number = 1004 ثم

MsgBox ("بيانات الموظف غير موجودة")

End IfEnd Sub

أشياء يجب تذكرها حول VLookup في Excel VBA

  • يمكن استدعاء وظيفة Vlookup في Excel VBA باستخدام وظيفة ورقة العمل.
  • يظل بناء جملة وظيفة vlookup كما هو في Excel VBA.
  • عندما يتعذر على كود VBA vlookup العثور على lookup_value ، فإنه سيعطي خطأ 1004.
  • يمكن إدارة الخطأ في وظيفة vlookup باستخدام تعليمة goto إذا كانت ترجع خطأ.