السلام عليكم ورحمة الله وبركاته
أقدم لكم طريقتين لإيجاد أو إظهار القيمة المفلترة في نطاق ، أي القيمة التي تمت التصفية على أساسها.
بفرض أن لدينا النطاق A1:A20 به مجموعة من الأسماء وتمت تصفية أو فلترة النطاق على أساس اسم محدد وليكن Yasser ، والمطلوب أن يظهر هذا الاسم في خلية.
الطريقة الأولى باستخدام معادلة صفيف (أي بعد الإدخال يجب الضغط على
Ctrl + Shift + Enter) :
Ctrl + Shift + Enter) :
=IFERROR(INDEX(A2:A20,MATCH(1,(SUBTOTAL(3,OFFSET(A2:A20,ROW(A2:A20)-MIN(ROW(A2:A20)),0,1)))*(A2:A20<>""),0)),"")
الطريقة الثانية باستخدام دالة معرفة :
والدالة المعرفة User Defined Function يمكن استخدامها كدوال الإكسيل العادية أو يمكن استخدامها واستدعائها من إجراء فرعي آخر داخل مشروع محرر الأكواد
والدالة المعرفة User Defined Function يمكن استخدامها كدوال الإكسيل العادية أو يمكن استخدامها واستدعائها من إجراء فرعي آخر داخل مشروع محرر الأكواد
الدالة المعرفة UDF بالشكل التالي ، وتوضع في موديول عادي
Function FilterCriteria(Rng As Range) As String
Dim Filter As String
Filter = ""
On Error GoTo Finish
With Rng.Parent.AutoFilter
If Intersect(Rng, .Range) Is Nothing Then GoTo Finish
With .Filters(Rng.Column - .Range.Column + 1)
If Not .On Then GoTo Finish
Filter = .Criteria1
Select Case .Operator
Case xlAnd
Filter = Filter & " AND " & .Criteria2
Case xlOr
Filter = Filter & " OR " & .Criteria2
End Select
End With
End With
Finish:
FilterCriteria = Filter
End Function
ويمكن استخدامها في ورقة العمل بوضع المعادلة التالية في أي خلية :
=MID(FilterCriteria(A2:A20),2,LEN(FilterCriteria(A2:A20)))
وهذه صورة من الملف المرفق حيث يتم تصفية النطاق بشرط الاسم Yasser ، فتظهر القيمة المفلترة في الخلية C1 باستخدام معادلة الصفيف ، و في الخلية E1 باستخدام الدالة المعرفة.
إعداد / ياسر خليل أبو البراء
الله ينور بس الملف مش موجود
ردحذف