تصفية متقدمة بعدة شروط
سبحان من خلق الكون ونظمه ،سبحان من خلق الإنسان وعلمه ، سبحان من أجرى الرياح وأنار الكون بعد الدجى بأنوار الصباح ، سبحان من رفع بالعلم الناس درجات وابتلى الناس بالحياة والممات ، سبحان من رفع ووضع وفرّق وجمع وأعز وأذل وأغنى وأقنى .....إنه عليم بالسرائر وما تخفيه الضمائر .... سلكنا طريق العلم برحمته ومنته لنستدلّ بعلمنا على جهلنا وأن علم الأولين والآخرين منا لا يعادل قطرة ماء أمام البحار الزاخرة من علمه ...سبحانه وتعالى.
وتعلمنا الحساب وبلغنا به مبلغاً يذهل العقول لنقف أمام ("والله أسرع الحاسبين") بعجزنا وقلة حيلتنا إذ أن قطرة الماء ونسمة الهواء وحركة الجسم والأعضاء هي نعم منه أغدقها علينا لنشكره على آلائه الجسيمة ونعمه العظيمة . علمنا أول شروط توحيدنا لله فنعبده – جل ذكره على بصيرة – ولذلك لا نقول كما قال قارون (" إنما أوتيته على علم عندي") بل نرجع الفضل لمن هيأ لنا الأسباب ....أما بعد : السلام عليكم ورحمة الله وبركاته ...
إخوتي الكرام أعرض لكم موضوعاً ترددت في نشره لأنه قد سبقني الكثير فيما يخصّ هذا الموضوع ولكن عسى أن يكون متكأ لنا يوم لا ينفع مال ولا بنون إلا من أتى الله بقلبٍ سليم..
أولاً: في ورقة البيانات يتم تسجيل بيانات الأشخاص كاملة ، استخدمت به عدداً من المعادلات:

=CONCATENATE([@الاسم];" ";[@الأب];" ";[@الكنية])
لجمعها في خلية واحدة
=IFERROR(IF([@المسكن]=E8;"";COUNTIFS([المسكن];[@المسكن];[محل و تاريخ الولادة];">="&$M$5;[محل و تاريخ الولادة];"<"&$M$4));"")
لتعداد الأطفال أصغر من 15 سنة
=IF([@المسكن]=E8;"";COUNTIF($E$7:E7;E7))
عدد سكان المسكن الواحد يظهر في آخر صف من الأسرة
ثانياً: في ورقة التصفية المتقدمة: أخذ نطاق المعايير Criteria من C1:V2 اعتمدت على عمودين مساعدين أقوم في العمود B بالبحث المرتبط بنطاق المعايير متضمناً تواريخ الولادة والدخول ليقوم بإيجادها بشكل ديناميكي .

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

استخدام دالة VLOOKUP :
- كمساعدة في إيجاد الأعداد لكل مسكن مثل:
=IFERROR(IF(VLOOKUP(A8;البيانات4[المسكن];1;0)=A8;COUNTIF(البيانات4[المسكن];$A8);"");"")
- كما تم استخدامها مع دالة CHOOSE للبحث بشكل عكسي عن اسم ما أو حسب موضع اختيار الدالة Choose الذي نحدده
مثال:
=IFERROR(VLOOKUP($O8;CHOOSE({1,2};البيانات4[عداد];البيانات4[الاسم الثلاثي]);2;0);"")
- أضف إلى ذلك إيجاد أكثر من نتيجة لـ lookup_value من خلال أعمدة مساعدة بجوار نطاق النتائج وآخر بجوار نطاق البيانات
=[@ المسكن]&"-"&COUNTIF($E$7:E7;E7) لنطاق البيانات
=$L$7&"-"&N8 حيث أن الخلية المثبتة تدل على رقم المسكن lookup_value والخلية الثانية هي ضمن مجموعة أعداد لتظهر بجوارها أسماء كل أسرة حسب رقم مسكنها.
لا أدعي أنني صاحب هذا العمل بل اطلعت على أكواد العديد من الأساتذة الأجلاء منهم أخونا الحبيب ياسر خليل أبو البراء فيما يتعلق بالتصفية المتقدمة وتفاعلها مع معطيات المستخدم
والصلاة والسلام على سيد المرسلين والحمد لله رب العالمين
والسلام عليكم ورحمة الله وبركاته.
لمشاهدة الروابط يلزمك التسجيل في أكاديمية الصقر للتدريب