سلام دوستان
در فایل پیوست میخوام اسم افرادی که max , min مبلغ و امتیاز رو گرفتن در جدول سمت راست چیده بشه مشکلم اینه که ممکنه از مقدار داده ها به صورت تکراری در ستون مبلغ و امتیاز هر ماه وجود داشته باشه میخوام تمام افرادی که مبلغ max , min رو دریافت کردن در یک سلول بطوریکه بینشون خط تیره یا کاما وجود داشته باشه بشینه.
کد ماکرویی که نوشتم به صورت زیر هست که اولین فردی که ماکسیسم و مینیمم گرفته رو خروجی میده.
Sub minmaxavrg3()
'
' minmaxavrg Macro
'
' Keyboard Shortcut: Ctrl+g
'
z1 = Cells(Rows.Count, "A").End(xlUp).Row
j = 4
For i = 32 To 43
j = j + 2
Cells(4, i) = Application.Min(Range(Cells(4, j), Cells(z1, j)))
Cells(5, i) = Application.Average(Range(Cells(4, j), Cells(z1, j)))
Cells(6, i) = Application.Max(Range(Cells(4, j), Cells(z1, j)))
Next i
j = 5
For i = 32 To 43
j = j + 2
Cells(9, i) = Application.Min(Range(Cells(4, j), Cells(z1, j)))
Cells(10, i) = Application.Average(Range(Cells(4, j), Cells(z1, j)))
Cells(11, i) = Application.Max(Range(Cells(4, j), Cells(z1, j)))
Next i
For m = 4 To 5
k = 4
For i = 32 To 43
k = k + 2
x1 = Range(Cells(4, 2), Cells(z1, 2))
x2 = Cells(m, i)
x3 = Range(Cells(4, k), Cells(z1, k))
If m = 4 Then
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
Else
x2 = Cells(m + 1, i)
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
End If
Next i
Next m
For m = 9 To 10
k = 5
For i = 32 To 43
k = k + 2
x1 = Range(Cells(4, 2), Cells(z1, 2))
x2 = Cells(m, i)
x3 = Range(Cells(4, k), Cells(z1, k))
If m = 9 Then
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
Else
x2 = Cells(m + 1, i)
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
End If
Next i
Next m
End Sub
ممنون میشم راهنمایی بفرمایید.
در فایل پیوست میخوام اسم افرادی که max , min مبلغ و امتیاز رو گرفتن در جدول سمت راست چیده بشه مشکلم اینه که ممکنه از مقدار داده ها به صورت تکراری در ستون مبلغ و امتیاز هر ماه وجود داشته باشه میخوام تمام افرادی که مبلغ max , min رو دریافت کردن در یک سلول بطوریکه بینشون خط تیره یا کاما وجود داشته باشه بشینه.
کد ماکرویی که نوشتم به صورت زیر هست که اولین فردی که ماکسیسم و مینیمم گرفته رو خروجی میده.
Sub minmaxavrg3()
'
' minmaxavrg Macro
'
' Keyboard Shortcut: Ctrl+g
'
z1 = Cells(Rows.Count, "A").End(xlUp).Row
j = 4
For i = 32 To 43
j = j + 2
Cells(4, i) = Application.Min(Range(Cells(4, j), Cells(z1, j)))
Cells(5, i) = Application.Average(Range(Cells(4, j), Cells(z1, j)))
Cells(6, i) = Application.Max(Range(Cells(4, j), Cells(z1, j)))
Next i
j = 5
For i = 32 To 43
j = j + 2
Cells(9, i) = Application.Min(Range(Cells(4, j), Cells(z1, j)))
Cells(10, i) = Application.Average(Range(Cells(4, j), Cells(z1, j)))
Cells(11, i) = Application.Max(Range(Cells(4, j), Cells(z1, j)))
Next i
For m = 4 To 5
k = 4
For i = 32 To 43
k = k + 2
x1 = Range(Cells(4, 2), Cells(z1, 2))
x2 = Cells(m, i)
x3 = Range(Cells(4, k), Cells(z1, k))
If m = 4 Then
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
Else
x2 = Cells(m + 1, i)
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
End If
Next i
Next m
For m = 9 To 10
k = 5
For i = 32 To 43
k = k + 2
x1 = Range(Cells(4, 2), Cells(z1, 2))
x2 = Cells(m, i)
x3 = Range(Cells(4, k), Cells(z1, k))
If m = 9 Then
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
Else
x2 = Cells(m + 1, i)
Cells(m, i + 14) = Application.Index(x1, Application.Match(x2, x3, 0))
End If
Next i
Next m
End Sub
ممنون میشم راهنمایی بفرمایید.