إجمالي مرات مشاهدة الصفحة

السبت، 24 سبتمبر 2016

استخدام دالة البحث VLOOKUP داخل محرر الأكواد Use VLOOKUP Function In VBA

السلام عليكم ورحمة الله وبركاته

أقدم لكم اليوم درس تعليمي في منتهى الأهمية حول كيفية استخدام الدالة VLOOKUP داخل الـ VBA ، حيث يوجد ميزة استخدام دوال الإكسيل التي نستخدمها في أوراق العمل داخل محرر الأكواد

في الملف المرفق مثال بسيط لتتضح الصورة بشكل أعمق ، وقد قدمت طريقتين مختلفتين لتنفيذ المطلوب ، مع شرح بالتفصيل لكل سطر من أسطر الكود


بفرض أن لديك مجموعة من الأسماء في العمود الأول ، والمطلوب هو البحث عن اسم محدد ، وإظهار عمر هذا الشخص في رسالة نصية.

المثال بسيط والغرض منه تعلم كيفية استخدام الكائن التابع لتطبيق الإكسيل والمسمى WorksheetFunction ، وكذلك تعلم كيفية استخدام الكائن المسمى Dictionary.

الكود المستخدم في الملف المرفق

Sub VLookup_Using_WorksheetFunction()
    'تعريف المتغير من النوع نطاق ، والذي يمثل نطاق البحث
    Dim myRange As Range
    
    'تعريف المتغير من النوع النصي ، والذي يمثل النص المراد البحث عنه
    Dim strLookUp As String
    
    'تعريف المتغير من النوع متنوع أو متعدد ، والذي يحمل نتيجة البحث
    Dim Result As Variant
    
    'تعيين نطاق البحث أي النطاق الذي يحتوي على البيانات المطلوب البحث فيها
    Set myRange = Worksheets("Sheet1").Range("A1:C" & Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row)
    
    'معيار البحث أو الكلمة التي سيتم البحث عنها داخل نطاق البحث
    strLookUp = "Reda"
    
    'وهو كائن داخل تطبيق الإكسيل [WorksheetFunction] هنا يتم استخدام كلمة
    'يمكن استخدام هذا الكائن للإشارة إلى دوال الإكسيل المختلفة
    'وهي دالة البحث ولها ثلاثة بارامترات [VLookup] هنا تم استخدام الدالة
    '------------------------------------------------------------------
    '   البارامتر الأول هو معيار البحث أو الكلمة المراد البحث عنها
    '   البارامتر الثاني هو نطاق البحث أي النطاق المطلوب البحث داخله
    '   البارامتر الثالث هو رقم عمود النتيجة المطلوب جلبها
    '   [Fasle] البارامتر الرابع لتكون نتيجة البحث متطابقة تماماً نستخدم القيمة
    Result = Application.WorksheetFunction.VLookup(strLookUp, myRange, 3, False)
    
    'إظهار نتيجة البحث في رسالة للمستخدم
    MsgBox Result
End Sub

Sub VLookup_Using_Dictionary()
    'تعريف المتغير من النوع كائن ، والذي يمثل الكائن قاموس
    Dim Dict As Object
    
    'تعريف المتغير من النوع نطاق ، ويستخدم هنا في الحلقة التكرارية
    Dim Cel As Range

    'تعريف المتغير من النوع نطاق ، والذي يمثل نطاق البحث
    Dim myRange As Range
    
    'تعيين المتغير ليحمل قيم الكائن المسمى "القاموس" لتخزين القيم بداخله
    Set Dict = CreateObject("Scripting.Dictionary")
    
    'تعيين نطاق البحث أي النطاق الذي يحتوي على الأسماء المراد البحث داخلها
    Set myRange = Worksheets("Sheet1").Range("A1:A" & Worksheets("Sheet1").Cells(Rows.Count, 1).End(xlUp).Row)
    
    'حلقة تكرارية لكل خلية من خلايا النطاق
    For Each Cel In myRange
    
        'هذا السطر يستخدم في تخزين الاسم والعمر المرتبط به داخل الكائن
        'لإضافة عناصر جديدة داخله [Add] القاموس يستخدم الطريقة "إضافة" أو ما يسمى
        'وهو يحمل قيمة الاسم [Key] ويليها عدد 2 بارامتر الأول عبارة عن المفتاح
        'وهو يحمل قيمة العمر [Value] والبارامتر الثاني هو عبارة عن القيمة
        'لعمل إزاحة بمقدار عمودين من الخلية الحالية [Offset] تم استخدام الدالة
        Call Dict.Add(Cel.Value, Cel.Offset(0, 2).Value)
    
    'الانتقال للحلقة التالية
    Next Cel

    'إظهار نتيجة البحث في رسالة للمستخدم
    MsgBox Dict("Reda")
End Sub

وأخيراً إليكم الملف المرفق ، وفيه شرح لكلا الكودين 

إعداد / ياسر خليل أبو البراء

هناك 8 تعليقات:

  1. استاذ ياسر غيرت في البيانات وبتفعيل الكود يأتي بنتيجه واحده 44

    ردحذف
  2. البحث عن البيانات يكون عن طريق معيار البحث وهو الاسم ، قم بتغيير الاسم في السطر
    strLookUp = "Yasser"

    وفي الكود الثاني في آخر سطر قبل نهاية الكود غير الاسم المراد البحث عن عمره

    الموضوع تدريب على استخدام دالة البحث ..

    ردحذف
  3. وجزيت خيراً بمثل ما دعوت لي أخي الكريم سعد

    ردحذف
  4. جزاكم الله خيرا يا كبير
    ربنا يوفقك دايما
    رائع من يومك
    تقبل تحياتى

    ردحذف
  5. وجزيت خيراً أخي وحبيبي في الله حسام عيسى
    لكم يسعدني مرورك العطر والمشرف بالمدونة
    تقبل وافر تقديري واحترامي

    ردحذف
  6. أُشهد الله إنى احبك فى الله

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

    ردحذف