السلام عليكم
دالة ارجاع قيمة في نطاق حسب الترتيب LARGE_SMALL في عمود معين
كود
Option Explicit
' بسم الله الرحمن الرحيم "
'""""""""""""""""""""""""""""""""""""""""""""""""""""
' (دالة ارجاع قيمة (رقم أو نص أو قيمة منطقية "
' (للعمود(العمود_المطلوب MyRang من النطاق
' LARGE_SMALL (حسب الترتيب(رقم_الترتيب
' (للقيمة في العمود (عمود_القيمة "
'""""""""""""""""""""""""""""""""""""""""""""""""""""
' الترتيب_المطلوب "
' FALSE:LARGE (القيمة الكبرى ذات الترتيب(رقم_الترتيب "
' TRUE :SMALL (القيمة الصغرى ذات الترتيب(رقم_الترتيب "
'""""""""""""""""""""""""""""""""""""""""""""""""""""
Function VLO_LARGE_SMALL(MyRang As Range, عمود_القيمة As Integer _
, العمود_المطلوب As Integer, رقم_الترتيب As Integer _
, Optional الترتيب_المطلوب As Boolean = False)
Dim My_VLOOKUP
Dim T As Integer
Dim R As Integer
Dim T_1 As Integer
Dim T_2 As Integer
T = MyRang.Rows.Count
If رقم_الترتيب > T Or رقم_الترتيب = 0 Then VLO_LARGE_SMALL = "": Exit Function
With Application.WorksheetFunction
For R = 1 To T
T_1 = .Rank(MyRang.Cells(R, عمود_القيمة), MyRang.Columns(عمود_القيمة), الترتيب_المطلوب)
If الترتيب_المطلوب = False Then T_2 = .CountIf(Range(MyRang.Cells(1, عمود_القيمة), MyRang.Cells(R, عمود_القيمة)), MyRang.Cells(R, عمود_القيمة).Value)
If الترتيب_المطلوب = True Then T_2 = .CountIf(Range(MyRang.Cells(R, عمود_القيمة), MyRang.Cells(T, عمود_القيمة)), MyRang.Cells(R, عمود_القيمة).Value)
If رقم_الترتيب = T_1 + T_2 - 1 Then
My_VLOOKUP = MyRang.Cells(R, العمود_المطلوب)
Exit For
End If
Next R
End With
VLO_LARGE_SMALL = My_VLOOKUP
End Function
============================
المرفق الجديد المعدل:
_____________________________________________________.rar
============================
المرفق السابق :
_____________________________________________________.rar
============================