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

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

قام بنشر

الاخوة الاعضاء 
عندي جدول مكون من

الرقم - الاسم - العنوان - العمر 

طبعا لو تم عمل تصفية تلقائية ، سيتم اختيار الاسماء من خلال القائمة المنسدلة وتصفيتها ، ولكن في حال كانت البيانات كثيرة جدا وكنت ارغب مثلا باختيار 10 اسماء من عمود الاسماء الذي يحتوي مثلا 1000 اسم سيكون من الاسهل ان اكتبها في عمود اخر ومن ثم اطلب تصفية عمود الاسماء وفقا لهذا العمود 

 

السؤال هل استطيع كتابة العشر اسماء ومن ثم تصفيتها بالفلتر ( طبعا ستظهر فقط الاسماء الموجودة في عمود الاسم ) 

مرفق مثال عن المطلوب ,,,, مع الشكر لكم ولجهودكم 

Book111.xlsx

قام بنشر

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

جرب هدا هل يناسبك

Option Explicit
Sub FilterByNames()
    Dim WS As Worksheet, arr(), i&, n&, filterRange As Range
    Set WS = Sheets("Sheet1")
    
    If WS.AutoFilterMode Then WS.AutoFilterMode = False
    
    n = WS.Cells(WS.Rows.Count, "I").End(xlUp).Row
    If n < 2 Then Exit Sub
    
    ReDim arr(1 To n - 1)
    For i = 2 To n
        arr(i - 1) = WS.Cells(i, "I").Value
    Next i

    Set filterRange = WS.Range("B6").CurrentRegion
    With filterRange
        .AutoFilter Field:=2, Criteria1:=arr, Operator:=xlFilterValues
    End With
End Sub

 

  • Like 1
قام بنشر (معدل)

السلام عليكم اخ محمد 

شكرا جزيلا لحضرتك 

هذا هو المطلوب بالفعل ، لكن لو اردت مثلا اختيار بلد معين من خلال التصفية ومن ثم كتابة الاسماء المطلوبة من البلاد التي قمت باختيارها فان التعليمات اعلاه تقوم بالغاء التصفية ثم اختيار الاسماء من كل الجدول 

هل يوجد حل لهذا الموضوع 

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

مع الشكر الجزيل 

 

 

تم تعديل بواسطه محمود1980
قام بنشر

السلام عليكم 

في 5‏/5‏/2025 at 14:25, محمود1980 said:

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

تم الحل من خلال الغاء السطر الذي يقوم بالغاء التصفية التلقائية  If WS.AutoFilterMode Then WS.AutoFilterMode = False
وبذلك يتم عمل التعليمات على حسب التصفية الحالية .
 

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

قام بنشر (معدل)

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

بعد اذن استاذنا محمد هشام

جرب التعديل التالي

تفس الكود والتغديل في السطر

        arr(i - 1) = WS.Cells(i, "I").Value

بالسطر

arr(i - 1) = CStr(WS.Cells(i, "I").Value)

الكود كاملا

Option Explicit
Sub FilterByNames()
    Dim WS As Worksheet, arr(), i&, n&, filterRange As Range
    Set WS = Sheets("Sheet1")
    
    If WS.AutoFilterMode Then WS.AutoFilterMode = False
    
    n = WS.Cells(WS.Rows.Count, "I").End(xlUp).Row
    If n < 2 Then Exit Sub
    
    ReDim arr(1 To n - 1)
    For i = 2 To n
        arr(i - 1) = CStr(WS.Cells(i, "I").Value)
    Next i

    Set filterRange = WS.Range("B6").CurrentRegion
    
    With filterRange
        .AutoFilter Field:=2, Criteria1:=arr, Operator:=xlFilterValues
    End With
End Sub

 

تم تعديل بواسطه عبدالله بشير عبدالله
قام بنشر

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

إضافة بسيطة لسهولة الاستخدام إستمكالا لما بدأه أساتذتي: أ/ هشام و أ/ عبدالله

Book111.xlsm

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