Bir dizideki verinin sırasını bulma

Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Merhaba Arkadaşlar

VBA kodu yardımıyla oluşturduğum

turev(-2.85,-3.1,-19.2,24.9,-0.25,1.6,-2.05,2.35,-0.7,-0.1,-0.25)

dizisinde maximum ve minimum değerlerini bulmak için nasıl bir koddan kullanmalıyım. Bununla birlikte örneğin bu dizideki herhangi bir değerin (24.9 olabilir) kaçıncı sırada olduğunu bulabileceğim bir koda ihtiyacım var.

Yardımcı olursanız memnun olurum.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi bir fonksiyon kullanarak istediğinizi elde edebilirsiniz.

Kod:
Option Explicit
[COLOR=DarkGreen]'------------------------------[/COLOR]
Sub Deneme1()
[COLOR=DarkGreen]    'Max ve Min değerleri bulmak için
    'Kullanımı: Istatistik(arr,"Max") veya Istatistik(arr,"Min")[/COLOR]
    Dim arr As Variant
    arr = Array(-2.85, -3.1, -19.2, 24.9, -0.25, 1.6, -2.05, 2.35, -0.7, -0.1, -0.25)
    MsgBox "Maximum Değer : " & Istatistik(arr, "Max") & vbLf & _
           "Minimum Değer : " & Istatistik(arr, "Min") & vbLf
End Sub
[COLOR=DarkGreen]'------------------------------[/COLOR]
Sub Deneme2()
[COLOR=DarkGreen]    'Herhangi bir değerin dizide kaçıncı sırada olduğunu bulmak için ...
    'Kullanımı: Istatistik(arr,"Sira",Deger)[/COLOR]
    Dim arr As Variant
    Dim dblHerhangibirDeger As Double
    dblHerhangibirDeger = 24.9
    arr = Array(-2.85, -3.1, -19.2, 24.9, -0.25, 1.6, -2.05, 2.35, -0.7, -0.1, -0.25)
    MsgBox dblHerhangibirDeger & " dizide " & Istatistik(arr, "Sira", dblHerhangibirDeger) & ". sıradadır"
End Sub
[COLOR=DarkGreen]'------------------------------[/COLOR]
Function Istatistik(arr As Variant, sStat As String, Optional dblDgr As Double)
    
    Dim dblMax As Double
    Dim dblMin As Double
    Dim i As Integer
    
    If IsArray(arr) Then
        Select Case sStat
            Case "Max":
                For i = 0 To UBound(arr) - 1
                    If i = 0 Then
                        dblMax = arr(i)
                    Else
                        If arr(i) > dblMax Then dblMax = arr(i)
                    End If
                Next
                Istatistik = dblMax
                Exit Function
            Case "Min"
                For i = 0 To UBound(arr) - 1
                    If i = 0 Then
                        dblMin = arr(i)
                    Else
                        If arr(i) < dblMin Then dblMin = arr(i)
                    End If
                Next
                Istatistik = dblMin
            Case "Sira"
                For i = 0 To UBound(arr) - 1
                    If arr(i) = dblDgr Then
                        Istatistik = i+1
                        Exit Function
                    End If
                Next
        End Select
    Else
        Istatistik = "N/A"
    End If
    
End Function
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn. Levent Bey,

İlginiz için teşekkürler. Linki inceliyorum. İnşallah sorunumu çözebilirim.
 
Katılım
28 Nisan 2005
Mesajlar
252
Excel Vers. ve Dili
Excel 2010 Türkçe
Sn Ferhat Bey,
İlginizden ötürü sizede çok çok teşekkürler
 
Üst