اذهب الي المحتوي
أوفيسنا
بحث مخصص من جوجل فى أوفيسنا
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 3
قام بنشر (معدل)

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

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

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

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

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

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

 

 

تم تعديل بواسطه محمود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

 

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

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

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

Book111.xlsm

  • Like 1

انشئ حساب جديد او قم بتسجيل دخولك لتتمكن من اضافه تعليق جديد

يجب ان تكون عضوا لدينا لتتمكن من التعليق

انشئ حساب جديد

سجل حسابك الجديد لدينا في الموقع بمنتهي السهوله .

سجل حساب جديد

تسجيل دخول

هل تمتلك حساب بالفعل ؟ سجل دخولك من هنا.

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

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

Important Information