verileri sıralatma ve saydırma;

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Tekrarlanan veriler teke indirilecek mi yoksa sadece sıralama yapmak yeterli mi?
Sadece sıralama yeterliyse aşağıdaki kodları kullanabilirsiniz.

Kod:
Sub Sirala()
 
    Dim i As Long
    Dim rng As Range
    
    Application.ScreenUpdating = False
    
    i = Cells(Rows.Count, "E").End(3).Row
    Set rng = Range("E7:E" & i)
    
    Range("F7") = "=COUNTIF(" & rng.Address & ",E7)"
    Range("F7").AutoFill Destination:=Range("F7:F" & i)
    Range("E7:F" & i).Sort Key1:=[F1], key2:=[E1]
    Application.ScreenUpdating = True
    
    MsgBox "Sıralama Tamamdır...", vbInformation, "N. YEŞERTENER"
    
End Sub
 

Ekli dosyalar

Katılım
8 Mart 2009
Mesajlar
504
Excel Vers. ve Dili
2010
Necdet bey çok olandan az olana sıra yapsa ve yandaki satıra aşağıya doğru satır satır, çoktan aza doğru olanların birer birer yazarak karşılarına kaçar adet olduğunu yazdırabilirmiyiz.
 
Katılım
8 Mart 2009
Mesajlar
504
Excel Vers. ve Dili
2010
Necdet bey ayrıca cümlenin ilk 15 veya 20 karakterine göre yapsa ve ben bu 15-20 sayısını sayfada sizin tanımladığınız boş bir hücreye (A1) yazarak değiştirebilsem, bu şekilde bir sıralama mümkünmü acaba.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet bey çok olandan az olana sıra yapsa ve yandaki satıra aşağıya doğru satır satır, çoktan aza doğru olanların birer birer yazarak karşılarına kaçar adet olduğunu yazdırabilirmiyiz.
Merhaba,
Sadece sıralamak için :

Kod:
Sub Sirala()
 
    Dim i As Long
    Dim rng As Range
 
    Application.ScreenUpdating = False
 
    i = Cells(Rows.Count, "E").End(3).Row
    Set rng = Range("E7:E" & i)
 
    Range("F7") = "=COUNTIF(" & rng.Address & ",E7)"
    Range("F7").AutoFill Destination:=Range("F7:F" & i)
    Range("E7:F" & i).Sort Key1:=[F1], key2:=[E1]
    Application.ScreenUpdating = True
 
    MsgBox "Sıralama Tamamdır...", vbInformation, "N. YEŞERTENER"
 
End Sub
Teke indirilmiş sıralama için aşağıdaki kodları kullanınız.

Kod:
Sub Tek_Sirala()
 
    Dim d
    Dim i   As Long
    Dim x   As Variant
    Dim dizi
    
    Set d = CreateObject("Scripting.Dictionary")
    
    For i = 7 To Cells(Rows.Count, "E").End(3).Row
        x = Cells(i, "E")
        If Not d.exists(x) Then
            d.Add x, 1
        Else
            d.Item(x) = d.Item(x) + 1
        End If
        
    Next i
    
    dizi = d.Keys
    
    Range("G7").Resize(UBound(dizi) + 1, 1) = Application.WorksheetFunction.Transpose(dizi)
    dizi = d.items
    
    Range("H7").Resize(UBound(dizi) + 1, 1) = Application.WorksheetFunction.Transpose(dizi)
    i = Cells(Rows.Count, "G").End(3).Row
    Range("G7:H" & i).Sort Key1:=[H7], order1:=xlDescending
    
End Sub

Necdet bey ayrıca cümlenin ilk 15 veya 20 karakterine göre yapsa ve ben bu 15-20 sayısını sayfada sizin tanımladığınız boş bir hücreye (A1) yazarak değiştirebilsem, bu şekilde bir sıralama mümkünmü acaba.
Tam olarak anlamadım.
 

Ekli dosyalar

Katılım
8 Mart 2009
Mesajlar
504
Excel Vers. ve Dili
2010
Ellerinize sağlık teşekkürler.
cümlenin ilk 15 veya 20 karakterine göre sıralama yapsa ve ben bu karekter sayısını sayfada sizin tanımladığınız boş bir hücreye (A1) yazarak değiştirebilsem, (yani cümlenin ilk 10 karakterine göre bazende 15 karakterine göre, sayıyı ben değiştirebileyim) bu şekilde bir sıralama mümkünmü acaba. (foruma eklediğim deneme sayfasındaki sıralanacak veriler tek kelime halinde sizin vermiş olduğunuz makroyu ben cümlelerde kullanıyorum onun için ilk karakterlerini diyorum) A1 hücresine 15 yazacağım ve verileri bana sıralayacak ancak ilk 15 karakterine göre,
teke indirilmiş şekilde.

Teşekkürler.
 
Son düzenleme:

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,164
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
Sn. necdet bey, verileri teke düşürüp yaptığı sıralama da sanki son satırda kayıtlı olan dataya ait verileri dikkata almıyor. Örneğinizde ŞAMPUAN 5 olmalı, ama sıralamada hiç yok.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Sn. necdet bey, verileri teke düşürüp yaptığı sıralama da sanki son satırda kayıtlı olan dataya ait verileri dikkata almıyor. Örneğinizde ŞAMPUAN 5 olmalı, ama sıralamada hiç yok.

Haklısınız Tahsin bey,

Ufak bir unutkanlık işte :)

Range("G7").Resize(UBound(dizi) + 1, 1) = Application.WorksheetFunction.Transpose(dizi)
dizi = d.items

Range("H7").Resize(UBound(dizi) + 1, 1) = Application.WorksheetFunction.Transpose(dizi)

kırmızı ile belirttiğim 1 rakamı eklemeyi unutmaşım.

Önceki mesajımdaki kodlar ve dosya yeniden düzenlenmiştir.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Ellerinize sağlık teşekkürler.
cümlenin ilk 15 veya 20 karakterine göre sıralama yapsa ve ben bu karekter sayısını sayfada sizin tanımladığınız boş bir hücreye (A1) yazarak değiştirebilsem, (yani cümlenin ilk 10 karakterine göre bazende 15 karakterine göre, sayıyı ben değiştirebileyim) bu şekilde bir sıralama mümkünmü acaba. (foruma eklediğim deneme sayfasındaki sıralanacak veriler tek kelime halinde sizin vermiş olduğunuz makroyu ben cümlelerde kullanıyorum onun için ilk karakterlerini diyorum) A1 hücresine 15 yazacağım ve verileri bana sıralayacak ancak ilk 15 karakterine göre,
teke indirilmiş şekilde.

Teşekkürler.
Merhaba,

Sıralanacak Sözcük Uzunluğunu A1 hücresinden alır. Siz kendinize göre bu hücreyi değiştirebilirsiniz.

Kod:
Sub Tek_Sirala()
 
    Dim d
    Dim i   As Long
    Dim x   As Variant
    Dim dizi
    Dim Veri
    
    Set d = CreateObject("Scripting.Dictionary")
    
    For i = 7 To Cells(Rows.Count, "E").End(3).Row
        x = Left(Cells(i, "E"), Range("A1"))
        If Not d.exists(x) Then
            Veri = Array(x, 1)
            d.Add x, Veri
        Else
            Veri = d.Item(x)
            Veri(1) = Veri(1) + 1
            d.Item(x) = Veri
        End If
        
    Next i
    
    dizi = d.items
    
    i = Cells(Rows.Count, "G").End(3).Row
    If i < 7 Then i = 7
    Range("G7:H" & i).ClearContents
    
    For i = 0 To d.Count - 1
        Veri = dizi(i)
        Cells(i + 7, "G") = Veri(0)
        Cells(i + 7, "H") = Veri(1)
    Next i
    
    i = Cells(Rows.Count, "G").End(3).Row
    Range("G7:H" & i).Sort Key1:=[H7], order1:=xlDescending
    
End Sub
 

Ekli dosyalar

Katılım
8 Mart 2009
Mesajlar
504
Excel Vers. ve Dili
2010
Necdet bey kusura bakmassanız, verilerin (veri) sayfasında olduğunu ve (sayfa2) ye sıralamasını istesek mümkünmü acaba, veri sayfasında veiler (E) stununda 7 satırdan başlayıp aşağıya doğru iniyor. Teşekkürler.

ayrıca kendimizi geliştirmek adına bu makro yazmayı nasıl öğrenebilirim nereden başlamam gerekli,
insan utanıyor inanın yazılı makroyu bile sadece sayfasını değiştirmesini dahi bilmiyorum. Saygılarımla.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet bey kusura bakmassanız, verilerin (veri) sayfasında olduğunu ve (sayfa2) ye sıralamasını istesek mümkünmü acaba, veri sayfasında veiler (E) stununda 7 satırdan başlayıp aşağıya doğru iniyor. Teşekkürler.

ayrıca kendimizi geliştirmek adına bu makro yazmayı nasıl öğrenebilirim nereden başlamam gerekli,
insan utanıyor inanın yazılı makroyu bile sadece sayfasını değiştirmesini dahi bilmiyorum. Saygılarımla.
Merhaba,

Ben bu foruma üye olduğumda Makronun "M" sini bile bilmiyordum. Excel dersanesini ve makro ile ilgili sorulara verilen yanıtları inceleyerek ve VBA ile ilgili kitaplar alarak kendimi geliştirmeye çalıştım.

Sorunuza gelince aşağıdaki kodları inceleyiniz.
Daha önce verdiğim kodlarla karşılaştırınız.

Kod:
Sub Tek_Sirala()
    
    Dim d
    Dim i   As Long
    Dim x   As Variant
    Dim shV As Worksheet
    Dim sh2 As Worksheet
    Dim dizi
    Dim Veri
    
    Set shV = Sheets("Veri")
    Set sh2 = Sheets("Sayfa2")
    
    Application.ScreenUpdating = False
    
    Set d = CreateObject("Scripting.Dictionary")
    
    For i = 7 To shV.Cells(Rows.Count, "E").End(3).Row
    
        x = Left(shV.Cells(i, "E"), Range("A1"))
        If Not d.exists(x) Then
            Veri = Array(x, 1)
            d.Add x, Veri
        Else
            Veri = d.Item(x)
            Veri(1) = Veri(1) + 1
            d.Item(x) = Veri
        End If
        
    Next i
    
    dizi = d.items
    
    i = sh2.Cells(Rows.Count, "A").End(3).Row
    If i < 7 Then i = 7
    sh2.Range("A2:B" & i).ClearContents
    
    For i = 0 To d.Count - 1
        Veri = dizi(i)
        sh2.Cells(i + 2, "A") = Veri(0)
        sh2.Cells(i + 2, "B") = Veri(1)
    Next i
    
    i = sh2.Cells(Rows.Count, "A").End(3).Row
    sh2.Range("A2:B" & i).Sort Key1:=sh2.[B1], order1:=xlDescending
    
    Application.ScreenUpdating = True
    
    MsgBox "SIRALAMA BİTMİŞTİR...", vbInformation, "N. YEŞERTENER"
    sh2.Select
    
End Sub
 

Ekli dosyalar

Katılım
24 Şubat 2009
Mesajlar
1,077
Excel Vers. ve Dili
2016
Altın Üyelik Bitiş Tarihi
01-03-2023
Necdet Bey G sütunun sonuna yani bittiği yere TOPLAM olan miktarı H sütunun sonuna yazması için devamı için nasıl bir makro yazılır.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe
Necdet Bey G sütunun sonuna yani bittiği yere TOPLAM olan miktarı H sütunun sonuna yazması için devamı için nasıl bir makro yazılır.
Merhaba,

Eğer doğru anladıysam son verdiğim kodlar aşağıdaki şekilde olmalı.

Kod:
Sub Tek_Sirala()
    
    Dim d
    Dim i   As Long
    Dim x   As Variant
    Dim shV As Worksheet
    Dim sh2 As Worksheet
    Dim dizi
    Dim Veri
    
    Set shV = Sheets("Veri")
    Set sh2 = Sheets("Sayfa2")
    
    Application.ScreenUpdating = False
    
    Set d = CreateObject("Scripting.Dictionary")
    
    For i = 7 To shV.Cells(Rows.Count, "E").End(3).Row
    
        x = Left(shV.Cells(i, "E"), Range("A1"))
        If Not d.exists(x) Then
            Veri = Array(x, 1)
            d.Add x, Veri
        Else
            Veri = d.Item(x)
            Veri(1) = Veri(1) + 1
            d.Item(x) = Veri
        End If
        
    Next i
    
    dizi = d.items
    
    i = sh2.Cells(Rows.Count, "A").End(3).Row
    If i < 7 Then i = 7
    sh2.Range("A2:B" & i).ClearContents
    
    For i = 0 To d.Count - 1
        Veri = dizi(i)
        sh2.Cells(i + 2, "A") = Veri(0)
        sh2.Cells(i + 2, "B") = Veri(1)
    Next i
    
    i = sh2.Cells(Rows.Count, "A").End(3).Row
    sh2.Range("A2:B" & i).Sort Key1:=sh2.[B1], order1:=xlDescending
    
    '----------- TOPLAM SATIRI EKLENİR ----------
    sh2.Cells(i + 1, "A") = "TOPLAM"
    sh2.Cells(i + 1, "B") = "=SUM(B2:B" & i & ")"
    '---------- TOPLAM SATIR EKLEME SONU --------
    
    Application.ScreenUpdating = True
    
    MsgBox "SIRALAMA BİTMİŞTİR...", vbInformation, "N. YEŞERTENER"
    sh2.Select
    
End Sub
 
Katılım
8 Mart 2009
Mesajlar
504
Excel Vers. ve Dili
2010
Necdet bey, Word sayfasından veri almak mümkünmü ekteki word sayfasındaki başlıkları excel sayfasına makro yardımı ile nasıl alabiliriz. Forumda araştırdım ancak bulamadım İnşaallah bizde makroyu bu site sayesinde öğreneceğiz, VBA ile ilgili olarak öncelikli olarak hangi kitaptan başlamamız gerekir kitap adı verirmisiniz. Teşekkürler.
 

Ekli dosyalar

Son düzenleme:

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,370
Excel Vers. ve Dili
Ofis 365 Türkçe

tahsinanarat

Altın Üye
Katılım
14 Mart 2005
Mesajlar
2,164
Excel Vers. ve Dili
Ofis 2019 Türkçe
Altın Üyelik Bitiş Tarihi
27-05-2028
sn. abbasonline, verdiğiniz örnek word dosyanızı bir daha gözden geçirin, xxxxxxxxxxx lerden başka hiç bir kriter yok, böyle bir durumda kim ne yapabilir ki.
 
Üst