اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
Custom Search

تصفية متقدمة


alfahad

الردود الموصى بها

بفضل من الله اولاً ثم فيديو لأخينا ابو لميس جزاه الله خيرا

تعلمت كيفية عمل تصفية متقدمة

ولكن تعثرت خطواتي عندما اردت ان اعمل تصفية متقدمه بين تاريخين يتم تحديدهما لتظهر التصفية التاريخين وما بينهما بمعنى ( من تاريخ الى تاريخ )

ولجات لخبراء واساتذة المنتدى لعل وعسى اتعلم كيفية عمل هذه القائمة المتقدمة بين تاريخين

يوجد ملف مرفق وارجو توضيح الخطوات

الرابط الفيديو الذي تعلمت منه

تصفية متقدمة.rar

تم تعديل بواسطه دغيدى
رابط هذا التعليق
شارك

السلام عليكم

أخي العزيز

تفضل المرفق وبه

تصليح للتصفية حسب الراتب

إضافة كود للتصفية حسب تاريخ الولادة

وأترك لك عمل كود التصفية حسب تاريخ الالتحاق بالوظيفة

تصفية متقدمة2.rar

رابط هذا التعليق
شارك

الكودين هما


Sub Macro1()


Sheets("تصفية بالراتب").[B21:M1000].FillLeft  ' لمسح البيانات والفورمات القديمة

[A2:G1002].AutoFilter

    ActiveSheet.[A2:G1002].AutoFilter Field:=7, Criteria1:=[J17] & [K17], Operator:=xlAnd

    LR = [A2000].End(xlUp).Row

    Range("A2:D" & LR).Copy (Sheets("تصفية بالراتب").[B21])

    Range("F2:G" & LR).Copy (Sheets("تصفية بالراتب").[F21])

    Application.CutCopyMode = False

ActiveSheet.AutoFilterMode = off

End Sub

Sub Macro2()


Sheets("تصفية تاريخ من الى").[B2:M1000].FillLeft  ' لمسح البيانات والفورمات القديمة

[A2:G1002].AutoFilter

    ActiveSheet.[A2:G1002].AutoFilter Field:=3, Criteria1:=">=" & [J12], Operator:=xlAnd, Criteria2:="<=" & [K12]

    LR = [A2000].End(xlUp).Row

    Range("A2:G" & LR).Copy (Sheets("تصفية تاريخ من الى").[B2])

    Application.CutCopyMode = False

ActiveSheet.AutoFilterMode = off

End Sub

رابط هذا التعليق
شارك

بارك الله فيك استاذي الفاضل طارق محمود واشكرك على تفضلك علي

استاذي الفاضل ما اردته هو نفس الطريقة المتبعة في الفيديو كما في الخطوات

1 - نعمل قائمة منسدلة وتصبح فيما بعد نطاق المعيار

2- تسجيل الماكرو لنقوم بتسجيل الخطوات

_ نسخ خلايا اسماء الاعمدة في ورقة البيانات ولصقة في الورقة المراد اظهار التصفية بها

_ اختيار خيارات متقدمة من شريط الادوات

_ نحدد النسخ الة موقع اخر ونكمل باقي الحقول ( نطاق القائمة ) ( نطاق المعيار ) (نسخ الى )

ثم نوقف تسجيل الماكرو

وكانت المشكلة في كيفية تحديد التاريخين

اذا تكرمت بتوضيح هذه النقطة اكن لك من الشاكرين

رابط هذا التعليق
شارك

بارك الله فيك استاذي الفاضل طارق محمود واشكرك على تفضلك علي

استاذي الفاضل ما اردته هو نفس الطريقة المتبعة في الفيديو كما في الخطوات

1 - نعمل قائمة منسدلة وتصبح فيما بعد نطاق المعيار

2- تسجيل الماكرو لنقوم بتسجيل الخطوات

_ نسخ خلايا اسماء الاعمدة في ورقة البيانات ولصقة في الورقة المراد اظهار التصفية بها

_ اختيار خيارات متقدمة من شريط الادوات

_ نحدد النسخ الة موقع اخر ونكمل باقي الحقول ( نطاق القائمة ) ( نطاق المعيار ) (نسخ الى )

ثم نوقف تسجيل الماكرو

وكانت المشكلة في كيفية تحديد التاريخين

اذا تكرمت بتوضيح هذه النقطة اكن لك من الشاكرين

وكانت المشكلة في كيفية تحديد التاريخين

تحدد نطاق المعيار من عمودين وصفين

في العمود الاول

في الصف الاول : تاريخ الولادة

في الصف الثاني :

">="&"التاريخ"
في العمود الثاني في الصف الاول : تاريخ الولادة في الصف الثاني :
"<="&"التاريخ"

والله اعلم

رابط هذا التعليق
شارك

أخي العزيز alfahad

قمت بتنفيذ طريقة أستاذنا الكبير : عبد الله باقشير

لكن لاحظت أنه يقوم بالتصفية حسب العام ولا بد أن يكون يوم الشهر في التاريخ الأصغر أقل من يوم الشهر في التاريخ الأكبر

وحيث لاحظت أشهر بعد وقبل الأشهر المحددة في المعيار

ولكن قمت بعمل طريقة أخرى حيث يتم وضع التاريخ في صف أسفل صف المعيار واستخدمت في الصف الثاني للمعيار دالة CONCATENATE في كلا العمودين حيث المعادلة كالتالي :


=CONCATENATE(">=";C4)

بالنسبة للعمود الأول للمعيار أي ( من ) والمعادلة التالية للعمود للثاني للمعيارأي ( إلى) وهي :

=CONCATENATE("<=";C4)

وقمت بإخفاء صف المعيار الثاني وهو الصف رقم (3) في الورقة ويتم كتابة التاريخ في الصف الرابع

ثم يتحول التاريخ على شكل رقم برمجي في صف المعيارمما يسهل التعرف عليه برمجياً

والحمد لله كانت النتائج صحيحة

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

زاده الله علما ورفعة وبارك الله فيه

والعفو

لاحظ المرفق

تصفية متقدمة2.rar

رابط هذا التعليق
شارك

اخي الشهابي

بعد شكرك على الجهد الذي بذلته في الشرح

ارجو الاطلاع على المرفق في الصفحات تصفية وما بعدها وتحديد اين يوجد الخطأ

حيث انني حاولة كثيراً متبعاً الخطوات التي شرحتها في المشاركة رقم 6

ولكن تعثرت ولم احصل على المطلوب

وتقبل شكري وتقديري لشخصكم الكريم

تصفية متقدمةمحاولات.rar

رابط هذا التعليق
شارك

أخي العزيز

alfahad

الخطأ الذي وقعت فيه هو حذفك للصف الأول للمعيار وهو عنوان العمود المراد التصفية به وهو ( تاريخ الولادة )

فالتصفية المتقدمة لابد في المعيار من شيئين هو عنوان العمود المراد التصفية به تخار العمود الذي تريد

فمثلا لو غيرت عنوان المعيار من ( تاريخ الولادة ) إلى عنوان ( الراتب ) ثم وضعت في الصف الثاني رقم معين من أرقام الراتب عندك مثلا ( 1160 )

بس في الطريقة التي عملتها لا تضعها مباشرة ولكن في الخلية التي تحتها حيث ستصبح خلية المعيار ( >=1160)

وبالتالي سيتم البحث عن الأرقام التي أكبر من 1160 وجلب البيانات على أساسها

ولكن هناك مشكلة ستواجهك وهو تفريغ الصف الثاني من عمود المعيار الثاني لو تركت عنوانه ( تاريخ الولادة ) لن يكون فارغا

ولكن ستبقى فيه ( <= ) وحتى لو تم عمل معادلة تجعله فارغا لن يعتبر في حالة التصفية فارغا لأنه يحتوي على معادلة

ويمكن تفاديها بوضع أعلى تاريخ في حالة أصغر من أو يساوي (<=) ووضع أقل تاريخ في حالة أكبر أو يساوي(>=)

كما يمكنك استعمال لا يساوي ( <>) وبالتالي سيجلب جميع القيم إلا المذكورة في المعيار

كما لابد من موضع النسخ أن يتوفر فيه عنواين الجدول المطلوب جلب البيانات منه ولا يلزم وضعها كلها يمكنك أن تختار بعضها

بس لابد من الإنتباه إلى ضرورة أن تكون تسميات العناوين متطابقة مع الجدول المطلوب جلب البيانات منه ولو كررت تسمية أحد العناوين مرتين سيكرر البيانات له

وأيضا تسميات عناوين المعيار ضروري أيضا تكون متطابقة مع عنواين الجدول ويمكنك أن تجعل كل عنواين الجدول معيار ولبس معيار واحد أو اثنين فقط

وأفضل طريقة لتفادي الخطأ هو عملية نسخ العناوين من الجدول ولصقها في المعيار والجدول المطلوب جلب البيانات له

جرب مرة أخرى وإن شاء الله تتوفق

تصفية متقدمةمحاولات.rar

رابط هذا التعليق
شارك

بارك الله فيك اخي واستاذي الشهابي

فعلاً شرح وافي ورائع حفظك المولى وسدد خطاك

وبودي استفيد ايضاً لو اردت ان يظهر لي ناتج التصفية الاعمدة B و C و F فقط كيف تكون طريقة عمل ذلك

وما هي طريقة منع العبث بالمعادلة والمعيار.

وجزاك الله خير..

رابط هذا التعليق
شارك

أخي العزيز alfahad

وبودي استفيد ايضاً لو اردت ان يظهر لي ناتج التصفية الاعمدة B و C و F فقط كيف تكون طريقة عمل ذلك

في هذه الحالة لابد أن تترك أحد أعمدة الجدول بدون عنوان أو تزيد في نطاق اليبانات عمود آخر يكون فارغ

حيث عند الإستخراج الأعمدة الفارغة من العناوين سيتم تفريغها من البيانات أي سيتم مسح البيانات منها

إذا كان تريد مثلا وضع معادلات في نطاق الإستخراج ولا تريد حذفها لن يتأتى

لأن التصفية ستعتبر أي عمود فارغ في نطاق الإستخراج يقابل العمود الأخير الفارغ وبالتالي سيتم تفريغه

وما هي طريقة منع العبث بالمعادلة والمعيار.

في هذه الحالة لابد من حماية الورقة وهذا غير ممكن مع التصفية المتقدمة لأن من شروطها أن تكون الورقة غير محمية

ولكن تم الإستعانة الحمد لله بمشاركة أساتذتنا الكرام رجب جاويش و أبو حنين وعبد الله باقشير وبالتحديد مشاركة أستاذنا عبد الله باقشير رقم 12

بإضافة الأسطر التي وضعها لكود التصفية والموضوع هو :

http://www.officena....showtopic=42655

حيث يتم فك الحماية أثناء عمل كود التصفية وبمجر الإنتهاء يتم الحماية مرة أخرى

تصفية متقدمةمحاولات.rar

رابط هذا التعليق
شارك

اخي الشهابي بارك الله فيك

لم افهم المقصود بالاعمدة الفارغة هل تقصد ترك اعمدة فارغة في

صفحة البيانات (الصفحة التي سوف نعمل له تصفية )

ام المقصودة الصفحة التي يتم فيها لصق البيانات بعد تصفيتها.

وايضاً بعد اختيار خيارات متقدمة ماهي الكيفية التي تقوم بتعبئة النطاقات

لانني لم اعرف كيف ادخل عليها وارى كيفية تعبئتك للنطاقات

بمعنى خطوات تعبئة نطاق البيانات ونطاق المعيار ونطاق نسخ الى

( تعبئة النطاقات في شاشة الخيارات المتقدمة )

وجزاك الله خير

رابط هذا التعليق
شارك

ارجو الاطلاع على المرفق وتعليمي كيف يتم ذلك

الشرح في صفحة المطلوب

وجزكم الله خيراً

وقد قمت بعملها كم شرح اخونا الشهابي ولكن المشكلة ان المغادرين بياناتهم لا تكون صحيحة

بيانات السائق .rar

تم تعديل بواسطه alfahad
رابط هذا التعليق
شارك

أخي العزيزalfahad

أولا : اعتذر عن تأخري في الرد

ثاانيا : نعم أقصد زيادة عمود فارغ في ورقة البيانات

ثالثا :

name='alfahad' timestamp='1348776003' post='250667']

وقد قمت بعملها كم شرح اخونا الشهابي ولكن المشكلة ان المغادرين بياناتهم لا تكون صحيحة

السبب أخي العزيز هو تكرار عنواين الأعمد في القادمين والمغادرين ماعدا ( من) في القادمين و( إلى ) في المغادرين

فالتصفية تعتمد العنوان في العمود الأول ترتيبا وإذا تكرر نفس العنوان في عمود آخر يتم تجاهله وبما أن العناوين موجودة في بيانات القادمين ومجودة أيضا في بيانات المغادرين فعند التصفية يتم جلب بيانات القادمين ومن ثم أيضا يتم جلبها مرة أخرى في أعمدة بيانات المغادرين

ولكن يمكن التخلص بزيادة حرف أو رقم في بيانات المغادرين للعناوين المكررة تفادياً للتكرار

أو يمكن تسجيل كود تصفية لبيانات القادمين على حدة وكود آخرلتصفية بيانات المغادرين ويمكن في ما بعد دمج الكودين معا من محرر الأكواد

وهذا ما فعلته في ملفك لاحظ الملف المرفق

بيانات السائق (1).rar

رابط هذا التعليق
شارك

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

زائر
اضف رد علي هذا الموضوع....

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • تصفح هذا الموضوع مؤخراً   0 اعضاء متواجدين الان

    • لايوجد اعضاء مسجلون يتصفحون هذه الصفحه
×
×
  • اضف...

Important Information