السلام عليكم ورحمة الله وبركاته
إخواني الكرام وأحبابي في الله
أقدم لكم موضوع بسيط ولن يطول الشرح فيه عن قصد .. فالقصد من الموضوع هو محاولة البحث والتجربة للاستفادة بأكبر قدر من المعلومات
سأعطيكم الأساسيات فقط في سطور قليلة
سأتحدث إليكم عن التصفية المتقدمة وهي هامة جداً في استخراج البيانات سواء بشروط أو من غير شروط
سأعطيكم شكل الكود وليس الكود نفسه لمحاولة التطبيق بأنفسكم
بفرض أن لديك بيانات في النطاق من A1 إلى C20 وفي العمود الثالث يوجد أسماء شركات مكررة والمطلوب استخراج أسماء الشركات في العمود الثالث بدون تكرار باستخدام التصفية المتقدمة ، وتوضع النتائج في العمود الخامس أي بعد البيانات التي لديك ببعد عمودين
كيفية التطبيق ..
---------------
>> تقوم بالإشارة إلى نطاق يشير لكامل البيانات للنطاق الحالي ، بالاعتماد على النطاق الحالي للخلية A1 .. باستخدام متغير من النوع نطاق وليكن باسم r
يمكنك مراجعة الموضوع التالي للمزيد
من هنا
>> تقوم بالإشارة إلى الخلية E1 ولكن ليس بشكل مباشر بل بشكل يعتمد على الخلية A1 بحيث تقوم بعمل إزاحة بمقدار عدد أعمدة النطاق الحالي زائد 2 .. لتكون أول خلية في النتائج هي الخلية E1 >> والنطاق سيكون في متغير من النوع نطاق باسم c
>> آخر جزء سيكون في سطر واحد ..حيث يتم الإشارة للنطاق الحالي r في العمود الثالث منه باستخدام Columns يليها قوسين وبين القوسين رقم العمود داخل النطاق .. وهو رقم 3
ثم يتم استخدام الحدث AdvancedFilter يليه مسافة .. وبعد المسافة توضع عدة بارامترات
* البارامتر الأول سيكون إما القيمة xlFilterInPlace (وتعني أن تكون نتائج التصفية في نفس العمود) أو xlFilterCopy (وتعني نسخ نتائج التصفية المتقدمة) .. ويمكن استخدام الثوابت 1 بدلاً من xlFilterInPlace .. أو الثابت 2 بدلاً من xlFilterCopy ... وهنا بما أننا نريد النتائج في عمود آخر سنستخدم القيمة xlFilterCopy أو الرقم 2
* البارامتر الثاني هو نطاق الشروط وهنا لا يوجد شروط وبالتالي لا يوضع شيء بعد الفاصلة وتوضع فاصلة أخرى للانتقال للبارامتر الذي يليه
* البارامتر الثالث وهو أول خلية في نطاق النتائج وهو في هذه الحالة سيكون مخزن في المتغير c الذي سيشير إلى الخلية E1
* البارامتر الرابع والأخير عبارة عن قيمة منطقية أي False أو True ، وتستخدم True في حالة أنك تريد الحصول على القيم الفريدة أي الغير مكررة لهذا العمود . ومن ثم ستكون قيمة هذا البارامتر في مثالنا هو True
في انتظار تفاعلكم بملفات مرفقة وأكواد ..
وفقني الله وإياكم لكل خير
رابط الملف المرفق من هنا
تقبلوا تحياتي
أخوكم في الله / ياسر خليل أبو البراء