إجمالي مرات مشاهدة الصفحة

السبت، 16 أبريل 2016

إيجاد القيمة المفلترة Display Filtered Value

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

أقدم لكم طريقتين لإيجاد أو إظهار القيمة المفلترة في نطاق ، أي القيمة التي تمت التصفية على أساسها.
بفرض أن لدينا النطاق A1:A20 به مجموعة من الأسماء وتمت تصفية أو فلترة النطاق على أساس اسم محدد وليكن Yasser ، والمطلوب أن يظهر هذا الاسم في خلية.
الطريقة الأولى باستخدام معادلة صفيف (أي بعد الإدخال يجب الضغط على
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 يمكن استخدامها كدوال الإكسيل العادية أو يمكن استخدامها واستدعائها من إجراء فرعي آخر داخل مشروع محرر الأكواد
الدالة المعرفة 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 باستخدام الدالة المعرفة.

إعداد / ياسر خليل أبو البراء

هناك تعليق واحد: