- Katılım
- 1 Temmuz 2005
- Mesajlar
- 2,605
- Excel Vers. ve Dili
- Ofis 2013 TR 64 Bit
Merhaba,
A1:A5000 arasında farklı sayılar karışık olarak yer almaktadır.
Amacım, bu sayıların her birinin kaç kez tekrar ettiği (frekans) ve frekansı en yüksek olan ilk on sayıyı bulmak.
Bu işlemi aşağıdaki kodlarla, frekansları sayfaya yazdırıp sıralayarak yaptım.
Hem öğrenmek, hem de sayfayı kullanmamak adına, (atacağımız taş ürküteceğimiz kurbağaya değmese bile) bu işlemi kod ile yapabilir miyiz?
Teşekkürler.
A1:A5000 arasında farklı sayılar karışık olarak yer almaktadır.
Amacım, bu sayıların her birinin kaç kez tekrar ettiği (frekans) ve frekansı en yüksek olan ilk on sayıyı bulmak.
Bu işlemi aşağıdaki kodlarla, frekansları sayfaya yazdırıp sıralayarak yaptım.
Hem öğrenmek, hem de sayfayı kullanmamak adına, (atacağımız taş ürküteceğimiz kurbağaya değmese bile) bu işlemi kod ile yapabilir miyiz?
Teşekkürler.
Kod:
Sub Ilk_On_Bul()
Dim ss, x, i As Integer
Dim Dizi As Variant
Dim Liste As Object
Sheets("Sayfa5").Select
ss = Sheets("Sayfa5").Cells(Rows.Count, "A").End(3).Row
Sheets("Sayfa5").Range("C2:D" & ss).ClearContents
Dizi = Sheets("Sayfa5").Range("A1:A" & ss)
Set Liste = CreateObject("System.Collections.ArrayList")
For i = 1 To UBound(Dizi)
If Not Liste.contains(Dizi(i, 1)) Then Liste.Add Dizi(i, 1)
Next
Liste.Sort
For i = 0 To Liste.Count - 1
x = WorksheetFunction.CountIf(Sheets("Sayfa5").Range("A1:A" & ss), Liste(i))
Sheets("Sayfa5").Cells(i + 2, 3) = Liste(i)
Sheets("Sayfa5").Cells(i + 2, 4) = x
Next
ss = Sheets("Sayfa5").Cells(Rows.Count, "C").End(3).Row
Sheets("Sayfa5").Range("C2:D" & ss).Sort Key1:=[D1], Order1:=2
Sheets("Sayfa5").Range("C12:D" & ss).ClearContents
End Sub