Dizide yuvarlama

Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Arkadaşlar merhaba,

Dizi oluştururken en son oluşan veriler üzerinden yuvarlama yapmak istiyorum. Örneğin toplamı 2.345.379 olan ilk verinin 2.345 olarak yuvarlanmasını istiyorum. 1000'e bölüp virgülden sonra rakam istemiyorum. Bunu aşağıdaki kodlara nasıl ekleyebilirim?

Kod:
Sub BENZERSİZ_TEK_SÜTUN_TOPLAMALI()
    Dim s As Object, liste(), dizi()
    
    son = Sheets(1).Cells(Rows.Count, "a").End(3).Row
    liste = Sheets(1).Range("a2:c" & son).Value
    
    ReDim dizi(1 To son, 1 To 1)
    
    Set s = CreateObject("Scripting.Dictionary")
    
    For i = 1 To UBound(liste, 1)
        Aranan = liste(i, 1)
        If Not s.exists(Aranan) Then
            Say = Say + 1
            s.Add Aranan, Say
            ReDim Preserve dizi(1 To son, 1 To 3)
            dizi(Say, 1) = liste(i, 1) & "-" & liste(i, 2)
        End If
        dizi(s.Item(Aranan), 2) = dizi(s.Item(Aranan), 2) + liste(i, 3)
    Next i
    
    Sheets(2).Range("A2").Resize(s.Count, 2) = dizi
    MsgBox dizi(2, 2)
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub BENZERSİZ_TEK_SÜTUN_TOPLAMALI()
    Dim S As Object, Liste(), Dizi(), i As Long, Son As Long, Aranan As String, Say As Long
   
    Son = Sheets(1).Cells(Rows.Count, "a").End(3).Row
    Liste = Sheets(1).Range("a2:c" & Son).Value
   
    ReDim Dizi(1 To Son, 1 To 1)
   
    Set S = CreateObject("Scripting.Dictionary")
   
    For i = 1 To UBound(Liste, 1)
        Aranan = Liste(i, 1)
        If Not S.Exists(Aranan) Then
            Say = Say + 1
            S.Add Aranan, Say
            ReDim Preserve Dizi(1 To Son, 1 To 3)
            Dizi(Say, 1) = Liste(i, 1) & "-" & Liste(i, 2)
        End If
        Dizi(S.Item(Aranan), 2) = Dizi(S.Item(Aranan), 2) + Liste(i, 3)
    Next i
   
    For i = 1 To Say
        Dizi(i, 2) = Int(Dizi(i, 2) / 1000)
    Next
   
    Sheets(2).Range("A2").Resize(S.Count, 2) = Dizi
   
    MsgBox Dizi(2, 2)
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodda küçük bir düzeltme yapmıştım. Son halini kullanınız.
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Sayın @Korhan Ayhan sizden ufak bir yardım rica edecektim.

Benim yapmak istediğim "muh kodu" "kredi sınıfı" "segment" ve "şube kodu"na göre anaparaları toplamak. Fakat kaç gündür uğraşıyorum bunu bir türlü beceremedim. En son sizinle paylaştığım kodlarda topluyorum ama sadece şube koduna göre ayrıştırıyor. Diğer kriterleri ekleyemiyorum.

Bu konuda bana yardımcı olabilir misiniz?

Örnek dosya linki

https://dosya.co/s2f62jgfwe42/Kitap1.xlsx.html
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Görmek istediğiniz sonuç nedir?
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Tüm kriterler için toplam görmek ona göre yuvarlanmış sütunundaki toplam rakam ile eşitleyeceğim.

Örneğin; şube kodu "80100", muh kodu "150050", kredi sınıfı "1" ve segmenti "2" olan satırlardaki "yuvarlanmış" sütununun toplamını "anapara" sütunundaki rakamların toplamının 1000'e bölümü ile eşitlemek istiyorum.

Yani verdiğim kriterlerdeki anaparaların toplamı "191.320" yapıyor. 1000'e bölümü "191" fakat yuvarlanmış sütununun toplamı "192" olduğu için yuvarlanmış sütundaki aynı kriterlerdeki en büyük sayıdan 1 çıkartarak onu da "191" e eşitlemek istiyorum.

Biraz dolambaçlı olmuş olabilir, anlatmak istediğimi yazıya dökebilmişimdir inşallah :)
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Paylaştığınız dosyanıza görmek istediğiniz sonucu ekleyip güncelleyiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Sonuç olarak N2 hücresinde 96 değerini mi görmek istiyorsunuz?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Oluşacak tablo aynı sayfada mı olsun, yoksa yeni boş bir sayfada mı olsun?

Aslında istediğiniz rapor Özet Tablo (Pivot) ile yapılabilir. Sizin için yönetmesi daha kolay olur.
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Oluşacak tablo aynı sayfada mı olsun, yoksa yeni boş bir sayfada mı olsun?

Aslında istediğiniz rapor Özet Tablo (Pivot) ile yapılabilir. Sizin için yönetmesi daha kolay olur.
Aynı sayfada rapor üzerinde değişiklik yapmak istiyorum @Korhan Ayhan Farklı bir sütuna veri taşımak istemiyorum. Çalıştığım dosya 1milyon satıra yakın veri içeriyor ve sütun sayısı çok fazla olduğu için farklı bir sayfaya almak işime yaramıyor.

Sonuçları görmek yeterli olmuyor. Fark veren satırlar için değişiklik de gerektiği için pivot işime yaramıyor maalesef.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Biz hangi tabloyu oluşturacağız benim kafam karıştı!

Amacımız son paylaştığınız dosyada ki I-N sütun aralığındaki tablo değil mi?
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Raporun ham hali A:F arasındaki veriler. I:N arasını sonucu göstermek için paylaşmıştım. Değişiklikleri F sütununda yapmak istiyorum.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Şimdi anladım siz F sütunundaki değerlerin sarı renkli alan için 96 vermesini istiyorsunuz.

Bunun için YUVARLA fonksiyonunu kaldırırsanız çözüme ulaşırsınız. Görüntü olarakta hücre biçimlendirmeden sayı biçimini ayarlayarak küsüratları gizleyebilirsiniz.
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Tam anlatamıyorum kusura bakmayın :)

F sütunundaki değerlerin sarı renkli alandaki gibi olmasını istiyorum. Yani normalde yuvarlanmış rakamı 23,23,24,24 olan satıların makroyu çalıştırdıktan sonra 23,23,25,25 olmasını istiyorum.

Normalde yuvarla fonksiyonu ile 23,23,24,24 yapıyor zaten ama ben onların toplamını 96'ya eşitlemeye çalışıyorum. Onun için makroya ihtiyacım var bu çalışmada. Az satırda çalışırken kolay ama satır sayısı arttığında tek tek 1 ekle 1 çıkar yapmak zorlaşıyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
YUVARLA fonksiyonunu kaldırmak işinizi görmüyor mu?
 
Katılım
9 Ekim 2019
Mesajlar
109
Excel Vers. ve Dili
Standart 2016
Listelerde tutarları 1000'e bölüp raporlamam lazım. Ondan yuvarlama işlemini kaldıramıyorum.
Şu şekilde kaldırabilirim; yuvarlanmış sütununu en baştan tüm kriterlere göre makro ile oluşturabilirsem olur.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,731
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
YUVARLA fonksiyonunu kaldırmak ne gibi bir sıkıntı yaratıyor
 
Üst