• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

En büyük üç sayıyı bulmak.

  • Konbuyu başlatan Konbuyu başlatan dEdE
  • Başlangıç tarihi Başlangıç tarihi

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,607
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,

Bir sütunda karışık olarak yazılmış sayılar içinde en büyük üç sayının bulunduğu satırı bulmak istiyorum.
Aşağıdaki kodlarla en büyük üç sayıyı bulabiliyorum. Sorun bu sayıların bulunduğu satır numaralarını bulmak.
Kod:
Sub En_Buyuk_Uc_Sayi()
    MsgBox WorksheetFunction.Large([A1:A20], 1)
    MsgBox WorksheetFunction.Large([A1:A20], 2)
    MsgBox WorksheetFunction.Large([A1:A20], 3)
End Sub
Yardımlarınız için teşekkürler.
 

Ekli dosyalar

Son düzenleme:
. . .

Kod:
Sub kod()

Range("B:B").ClearContents
For i = 1 To 3
For s = 1 To Cells(Rows.Count, "A").End(3).Row
If WorksheetFunction.Large(Range("A:A"), i) = Cells(s, "A") Then
If Cells(s, "B") = "" Then
Cells(s, "B") = i
Exit For
End If
End If
Next s
Next i

End Sub

. . .
 
Merhaba,
Ekli dosyada değişiklik yaptığım sırada yanıtlamışsınız.
Denedim, B sütununu temizleyip yeniden çalıştırınca 2. en büyük sayıyı bulmadı.
Aslında B sütununa yazmak yerine ilgili satır numaralarını değişkenlere atamak istiyorum.
Teşekkürler.
 
. . .

Kod:
Sub kod()

Dim dizi(3)

For i = 1 To 3
For s = 1 To Cells(Rows.Count, "A").End(3).Row
If WorksheetFunction.Large(Range("A:A"), i) = Cells(s, "A") Then

sat = Cells(s, "A").Row
If dizi(1) <> sat And dizi(2) <> sat And dizi(3) <> sat Then
dizi(i) = sat
Exit For
End If
End If
Next s
Next i

MsgBox dizi(1)
MsgBox dizi(2)
MsgBox dizi(3)

End Sub

. . .
 
Merhaba,

Alternatif olsun.

Kod:
Sub Max_Bul()
Columns("c").Clear
son = Cells(Rows.Count, "a").End(3).Row
Set con = VBA.CreateObject("adodb.Connection")

con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=no"""

sorgu = "select top 3 f1 from ( select f1 from [sayfa1$] group by f1) order by f1 desc"

Set rs = con.Execute(sorgu)

Do Until rs.EOF
For i = 1 To son

If Cells(i, "a") = rs(0) Then
x = x + 1
Cells(i, "c") = x
If x = 3 Then Exit Sub

End If
Next i

rs.movenext
Loop

End Sub
 
Merhaba,
Sayın Hüseyin Çoban, kodlar tam istediğim gibi, teşekkürler...
Sayın kuvari,
Kod:
con.Open "provider=microsoft.ace.oledb.12.0;data source=" & _
ThisWorkbook.FullName & ";extended properties=""Excel 12.0;hdr=no"""
satırı hata verdi. Sanırım excel versiyonu ile ilgili. Excel 2003 kullanıyorum.
Yine de teşekkürler. Sayın Çoban'ın kodları yeterli oldu.
 
Geri
Üst