logo

لوحة التميز الأسبوعي
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
العضو المتميز المشرف المتميز المراقب المتميز المدير المتميز الموضوع المتميز القسم المتميز
abdelmoniem ismail لا تميز خلال هذه الفترة-- لا تميز خلال هذه الفترة لا تميز خلال هذه الفترة توزيع المعلمين في جدول الحصص حسب النصاب بشروط اكسيل مشاريع جاهزه



أهلا وسهلا بك زائرنا الكريم في أكاديمية الصقر للتدريب، لكي تتمكن من المشاركة ومشاهدة جميع أقسام المنتدى وكافة الميزات ، يجب عليك إنشاء حساب جديد بالتسجيل بالضغط هنا أو تسجيل الدخول اضغط هنا إذا كنت عضواً .





06-11-2017 09:53 مساءً
بسم الله الرحمن الرحيم

بحث متقدم
5646546565

كود بحث متقدم يفوق معظم أنواع البحث بالاعتماد على المصفوفات
لضمان كفاءة عالية للبحث وسرعة جلب البيانات
والمرونة العالية به من حيث البحث داخل كل الأعمدة الموجودة داخل النطاق
تم توضيح المتغيرات التي تستطيعوا تعديلها لتتوافق مع ملفاتكم
الكود المستخدم داخل الملف


[p]
<code> </code></pre>

لتحميل الملف اضغط هنا

تم عمل اضافة بسيطة للبحث بشرطين اي شرط مع شرط التاريخ

صورة توضيحية لشكل البحث

5645654654654 لتحميل الملف اضغط هنا
اعداد / ياسر العربي




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  06-11-2017 09:54 مساءً   [1]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 705
المشاركات : 440
الجنس :
تاريخ الميلاد : 2-2-1990
قوة السمعة : 657
الاعجاب : 0

تفضلو شرح الكود الخاص بالبحث لاخي الغالي أ/ياسر ابو البراء

الشرح المستفيض لكود البحث المتقدم باستخدام المصفوفات للأستاذ الكبير ياسر العربي Search Using Arrays




السلام عليكم ورحمة الله وبركاته
كود البحث المتقدم باستخدام المصفوفات VBA Arrays
قدم لنا الأخ الغالي ياسر العربي صاحب الجولات والصولات كود رائع ، ويستخدم الكود في البحث المتقدم ، وقد استخدم المصفوفات والتي هي عشقي في التعامل مع الأكواد ، حيث يتم تنفيذ جميع أسطر الكود بالذاكرة بعيداً عن التعامل بشكل مباشر مع ورقة العمل ، مما يجعل الكود أسرع مئات المرات من استخدام الحلقات التكرارية العادية.

وقد ارتأيت أن أقوم ب شرح لأسطر الكود ليكون مرجع لكل طالب علم ولكل باحث في هذا الخصوص ، ولنبدأ مرحلة جديدة من عالم الأكواد باستخدام المصفوفات VBA Arrays ، لما لها من مرونة عالية وسرعة فائقة في تنفيذ الأكواد.
يوجد بالمرفق ورقتي عمل أحدهما باسم Data وفيها البيانات الخام من 14 عمود ، والورقة الأخرى باسم Result للنتائج وبها الخلية G2 والتي توضع بها نص الكلمة المراد البحث عنها.

001

002

وإليكم الكود مع الشرح بالتفصيل (وضعت مثال بسيط ليستطيع المتتبع للشرح فهم الكود بسهولة)


تحميل الملف من هنا
إعداد / ياسر خليل أبو البراء




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  06-11-2017 09:55 مساءً   [2]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 705
المشاركات : 440
الجنس :
تاريخ الميلاد : 2-2-1990
قوة السمعة : 657
الاعجاب : 0
CODE


 
Sub Araby_Search()
    'تعريف المتغير لورقة العمل التي تحتوي على البيانات الخام
    Dim wsData As Worksheet
 
    'تعريف المتغير لورقة العمـل المطلـوب إظهـار النتائـج بها
    Dim wsResult As Worksheet
 
    'تعريف المتغير ليحمل قيم المصفـوفة للبيانات الخـام
    Dim Arr As Variant
 
    'تعريف المتغير ليحمل قيم المصفوفة للنتائج المطلوبة
    Dim Temp As Variant
 
    'تعريـف المتغير من النـوع النصي ليحمـل قيمة أو نص البحث
    'أي الكلمة المطلوب البحث عنها يتم تخزينها في هذا المتغير
    Dim strSearch As String
    
    'تعريف المتغير وسيستخدم في الحلقة التكرارية لصفوف المصفوفة
    Dim I As Long
    
    'تعريف المتغير وسيستخدم في الحلقة التكرارية لأعمدة المصفوفة
    Dim J As Long
    
    'تعريف المتغير وسيستخدم في مصفوفة النتائج لزيادة مقدار الصفوف بمقدار واحد
    Dim P As Long
    
    'تعيين قيمة للمتغير ليساوي ورقة العمل التي تحتوي
    '[Data] على البيانات الخام المطلوب معالجتها والمسماة
    Set wsData = Worksheets("Data")
 
    'تعيين قيمة للمتغير ليساوي ورقة العمل التي تريد إظهار
    '[G2] النتائج بها بمجرد إدخال قيمة أو نص محدد في الخلية
    Set wsResult = Worksheets("Result")
    
    'مسح النطاق الذي توضع فيه النتائج استعداداً لوضع النتائج الجديدة
    wsResult.Range("A8:N10000").ClearContents
    
    '[G2] تعيين قيمة للمتغير ليساوي قيمة الخلية
    'وهي الخلية التي ستوضع فيها نص الكلمة المطلوب البحث عنها
    strSearch = wsResult.Range("G2").Value
    
    'تعيين قيمـة للمتغير ليحمل قيم النطاق بالكامل للبيانات الخام
    ' وذلك [Data] حيث أن مصـدر البيانات الخام ورقة العمل المسماة
    'عند [N] وينتهي في العمود [A5] في النطاق الذي يبدأ من الخلية
    '[&] آخـر صف به بيانات ، ويتم تحديده عن طريـق الجزء بعد علامـة
    Arr = wsData.Range("A5:N" & wsData.Cells(Rows.Count, 1).End(xlUp).Row).Value
    
    'والتي ستحمل قيم النتائج [Temp] إعادة تعيين أبعاد المصفوفة المسماة
    '[Arr] وتكون بنفس أبعاد المصفوفة التي تحمل البيانات الخام والمسماة
    'سنعتبر المصفوفة أشبـه بالصفـوف والأعمدة حيث الرقـم 1 يمثـل الصفـوف
    'بإرجاع أكبر قيمة [UBound]بينما الرقم 2 يمثل الأعمدة ، وتقوم الكلمة
    'أبعاد المصفوفة في هذه الحالة >>
    '-------------------------------
    'البعد الأول سيكون من 1 إلى أكبر قيمة للصفوف
    'البعد الثاني سيكون من 1 إلى أكبر قيمة للأعمدة
    ReDim Temp(1 To UBound(Arr, 1), 1 To UBound(Arr, 2))
    
    'حلقة تكرارية من الصف الأول للمصفوفة إلى آخر صف بها
    For I = 1 To UBound(Arr, 1)
    
        'إذا كان النص المطلوب البحث عنه فارغ يتم الخروج من تنفيذ الكود
        If strSearch = "" Then Exit Sub
        
        'هذا السطر هو أهم سطر بالكود حيث هو الشرط الذي من خلاله
        'والشرط [Temp] ستوضع النتائج في مصفوفة النتائج المسماة
        'هـو تطابق قيمة المصفوفة في صف الحلقة في العمود رقم 14
        'حيث يمثـل الرقم 14 العمود داخـل مصفوفة البيانات الخام
        '[strSearch] يتـم اختبـار التطابـق مع نـص البحث المسمى
        If Arr(I, 14) Like "*" & strSearch & "*" Then
            
            'زيادة مقدار المتغير بمقدار 1
            'فائدة المتغير هنا هو أنه مع كل حلقة تكرارية
            'إذا تحقق الشرط فقط يزيد المتغير بمقدار واحد
            'ليمثل هذا المتغير صفوف مصفوفة النتائج الجديدة
            P = P + 1
            
            'حلقة تكرارية داخلية من العمود الأول للمصفوفة إلى آخر عمود بها
            For J = 1 To UBound(Arr, 2)
                
                'تعبئـة مصفـوفة النتائـج بالبيانات مـن مصفوفة البيانات الخام
                '[Temp]مثـال لتتضح صورة كيفية تعبئة المصفوفة الجديدة المسماة
                'في أول حلقـة سيكون مقداره 1 ويمثل أول صف [P] المتغيـر المسمى
                'أول صف هنا لمصفوفة النتائج
                'في أول حلقة سيكون مقداره 1 ويمثل أول عمود [J] المتغير المسمى
                'في أول حلقة سيكون مقداره 1 ويمثل أول صف [I] المتغير المسمى
                'أول صف هنا لمصفوفة البيانات الخام
                Temp(P, J) = Arr(I, J)
                
            'الانتقال للحلقة التالية للأعمدة
            Next J
        
        'نهاية جملة الشرط وهو تطابق نص البحث مع العمود رقم 14 في المصفوفة
        End If
    
    'الانتقال للحلقة التالية في صفوف مصفوفة البيانات الخام
    Next I
    
    'إذا كانت قيمة المتغير أكبر من صفر فهذا يعني أنه تم إيجاد نتائج للبحث
    'حيث أن زيادة المتغير كما أوضحنا مقرونة بتحقق الشرط وطالما تحقق الشرط
    'فهذا يعني أن مصفوفة النتائج سيكون بها بيانات ومن ثم يتحقق الجزء الثاني
    
    '[A8] وضع نتائج مصفوفة النتائج في أول خلية في ورقة النتائج في الخلية
    '[P] ويتم تمديد النطاق بمقدار عدد الصفوف طبقاً لقيمة المتغير المسمى
    '[Temp] وبمقدار عدد الأعمدة طبقاً لأكبر عدد لأعمدة المصفوفة المسماة
    If P > 0 Then wsResult.Range("A8").Resize(P, UBound(Temp, 2)).Value = Temp
End Sub




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  06-11-2017 10:59 مساءً   [3]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10529
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36752
الاعجاب : 184
جزاك الله خيراً أخي الكريم ناصر ومشكور على المجهود المبذول




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  07-11-2017 12:13 صباحاً   [4]
معلومات الكاتب ▼
تاريخ الإنضمام : 26-09-2017
رقم العضوية : 705
المشاركات : 440
الجنس :
تاريخ الميلاد : 2-2-1990
قوة السمعة : 657
الاعجاب : 0
وجزاك الله خيرا استاذ ياسر خليل




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  14-11-2017 06:22 مساءً   [5]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-09-2017
رقم العضوية : 330
المشاركات : 241
الدولة : مصر
الجنس :
قوة السمعة : 324
الاعجاب : 0
السلام عليكم
الاخوة الكرام

جزاكم الله خيرا على الشرح والعمل
جزاك الله خيرا اخى الحبيب الاستاذ ياسر العرابى


نقطه اريد توضحها اليس من المفترض عن اختيارمن القائمه المنسدله D1 الاسم ولم يتم كتابه اى شئ فى الخليه E1 اى شي
يتم استقدام كل الاسماء بين التاريخين
وكذلك اختيار المهنه فى الخليه D1 ولم يتم كتابه اى شئ فى الخليه E1 اى شي
يتم استقدام كل المهن بين التاريخين




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  14-11-2017 06:50 مساءً   [6]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 14
المشاركات : 1309
الدولة : مصر
الجنس :
تاريخ الميلاد : 4-7-1990
الدعوات : 59
قوة السمعة : 4570
الاعجاب : 0
موقعي : زيارة موقعي
انا عن نفسي لم افهم شي وهل ما تقوم بشرح ينطبق على الملف السابق رفعة باعلى ام ملف اخر
يمكن احد اخر فهم قصدك ويرد عليك اعزرنى



توقيع :محمود ابو الدهب
لى عظيم الشرف بالانضمام لهذا الصرح العظيم
وكم أتمنى من الله
ان يعيننى ويعلمنى من علمة الواسع فهو ولي ذالك وهو على كل شي قدير

تحياتى وتقدير للجميع  محمود ابوالدهب

look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  14-11-2017 08:14 مساءً   [7]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-09-2017
رقم العضوية : 330
المشاركات : 241
الدولة : مصر
الجنس :
قوة السمعة : 324
الاعجاب : 0
الاخ الكريم
الاخ ياسر العرابي
إستفسارى عن ملف الموضوع
ونريد اضافه صف فى كلا الشيتين للترقيم




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  14-11-2017 08:21 مساءً   [8]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-09-2017
رقم العضوية : 330
المشاركات : 241
الدولة : مصر
الجنس :
قوة السمعة : 324
الاعجاب : 0
هل يمكن شرح كود الاخ ياسر العرابى

البحث بشرطين اي شرط مع شرط التاريخ

شرح وافي كما شرح الاخ ياسر خليل
وتم اضافه عمود تسلسل فى كلا الشيتين
الا انى لم اوفق فى ضبط الكود
attachSERCH_ARRY_YASSER_ELARABY.rar


تم تحرير المشاركة بواسطة :ahmed moh بتاريخ:14-11-2017 09:29 مساءً





look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  16-11-2017 07:34 صباحاً   [9]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 3
المشاركات : 10529
الجنس :
تاريخ الميلاد : 1-10-1978
الدعوات : 24
قوة السمعة : 36752
الاعجاب : 184
بارك الله فيكم إخواني الكرام وجزيتم خيراً




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  16-11-2017 11:32 صباحاً   [10]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 1
المشاركات : 1332
الجنس :
الدعوات : 13
قوة السمعة : 10064
الاعجاب : 66
موقعي : زيارة موقعي
جزاكم الله خير اخي الكريم ناصر على اعادة النشر وافادة الاخرين
اخي الكريم ابو حنين الاخ ياسرابو البراء فعلا شرح الموضوع باستفاضه بالنسبة لي لن يسعفني وقتي لشرحها مثله
ولكن ان شاء الله نقوم بتوضيح وظيفة كل سطر وطريقة عمله باذن الله اذا تيح لنا الوقت
اما بخصوص اي اسئلة او تعديلات يرجى وضعها بموضوع مستقل يكون افضل
تحياتي
142



توقيع :Yasser Elaraby
663013020

look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  16-11-2017 04:59 مساءً   [11]
معلومات الكاتب ▼
تاريخ الإنضمام : 03-09-2017
رقم العضوية : 330
المشاركات : 241
الدولة : مصر
الجنس :
قوة السمعة : 324
الاعجاب : 0
السلام عليكم
اخى ياسر العرابى142
اذا كنت تتحدث عن

الشرح المستفيض لكود البحث المتقدم باستخدام المصفوفات للأستاذ الكبير ياسر العربي Search Using Arrays

​فعلا شرح الاخ الكريم والمعلم القدير ياسر ابو البراء ممتاز ممتاز ولا شرح بعده 123

وكنت اقصد شرح الموضوع الثاني
للبحث بشرطين اي شرط مع شرط التاريخ
جزاكم الله كل الخير والتتقدير
واخص بالذكر اخى الحبيب ياسر ابو البراء ... لانه استحمل طلباتي الغير مغهومه والغير منطقيه




look/images/icons/i1.gif بحث متقدم .. سرعه عاليه ومرونه باستخدام المصفوفات
  16-11-2017 08:36 مساءً   [12]
معلومات الكاتب ▼
تاريخ الإنضمام : 21-08-2017
رقم العضوية : 14
المشاركات : 1309
الدولة : مصر
الجنس :
تاريخ الميلاد : 4-7-1990
الدعوات : 59
قوة السمعة : 4570
الاعجاب : 0
موقعي : زيارة موقعي
المشاركة الأصلية كتبت بواسطة: ahmed moh السلام عليكم
الاخوة الكرام

جزاكم الله خيرا على الشرح والعمل
جزاك الله خيرا اخى الحبيب الاستاذ ياسر العرابى

نقطه اريد توضحها اليس من المفترض عن اختيارمن القائمه المنسدله D1 الاسم ولم يتم كتابه اى شئ فى الخليه E1 اى شي
يتم استقدام كل الاسماء بين التاريخين
وكذلك اختيار المهنه فى الخليه D1 ولم يتم كتابه اى شئ فى الخليه E1 اى شي
يتم استقدام كل المهن بين التاريخين
اسف مختش بالى من طلبك ووعند الرجوع للموضوع وجد انه يكفيك لان تظهر البيانات ما بين التاريخين حتى لو كانت خلية الاسم فارغة كل ما هناك انه عليك الغاء هذا السطر من الكود
CODE
If targt = "" Then Exit Sub


وعندها تنول ما تريد
وعند اضافة اى بيان بخلية الاسم بعدها يتم عندها التصفية ايضا



توقيع :محمود ابو الدهب
لى عظيم الشرف بالانضمام لهذا الصرح العظيم
وكم أتمنى من الله
ان يعيننى ويعلمنى من علمة الواسع فهو ولي ذالك وهو على كل شي قدير

تحياتى وتقدير للجميع  محمود ابوالدهب

اضافة رد جديد اضافة موضوع جديد
الصفحة 2 من 3 < 1 2 3 >




المواضيع المتشابهه
عنوان الموضوع الكاتب الردود الزوار آخر رد
انشطار البيانات في عمود لعدة أوراق عمل باستخدام التصفية المتقدمة YasserKhalil
21 4927 YasserKhalil
كيفية عمل فلتر متقدم في البور كويري mmagedmemo
1 883 mmagedmemo
الفلترة المتقدم مع ملف اكسيل مشاركة مصطفى شولاني
1 950 مصطفى شولاني
الشرح المستفيض لكود البحث المتقدم باستخدام المصفوفات للأستاذ الكبير ياسر العربي Search Using Arrays YasserKhalil
32 4751 YasserKhalil
كن محترفاً - كورس كامل لأسرار إكسل المتقدمة بكار للأبد
8 1757 Ely saleh

الكلمات الدلالية
متقدم ، سرعه ، عاليه ، ومرونه ، باستخدام ، المصفوفات ،









اخلاء مسئولية: يخلى منتدى أكاديمية الصقر للتدريب مسئوليته عن اى مواضيع او مشاركات تندرج داخل الموقع ويحثكم على التواصل معنا ان كانت هناك اى إنتهاكات تتضمن اى انتهاك لحقوق الملكية الفكرية او الادبية لاى جهة - بالتواصل معنا من خلال نموذج مراسلة الإدارة .وسيتم اتخاذ الاجراءات اللازمة.
سياسة النشر: التعليقات المنشورة لا تعبر عن رأي منتدى أكاديمية الصقر للتدريب ولا نتحمل أي مسؤولية قانونية حيال ذلك ويتحمل كاتبها مسؤولية النشر.

الساعة الآن 12:39 PM