• DİKKAT

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

örnek çizelge

  • Konbuyu başlatan Konbuyu başlatan power
  • Başlangıç tarihi Başlangıç tarihi
Katılım
8 Aralık 2006
Mesajlar
218
Excel Vers. ve Dili
Excel 2002
Türkçe
Tüm üyelere iyi çalışmalar;
soruyu tam olarak nasıl ifade edeceğimi bilemedim.O yüzden basit bir örnek dosyam var.Bakabilirseniz çok memnun olurum.
 

Ekli dosyalar

selam,
dosyanız ektedir.
kolay gelsin.
 
Son düzenleme:
Alternatif kod ile,

Kod:
Option Explicit

Sub Topla()
Dim a(), b(), c(), e(), d As Object, d1 As Object, d2 As Object
Dim Say As Long, x As Long, i As Long, liste, k As Long, y As Variant
Dim S1 As Worksheet, S2 As Worksheet, t As Double
t = Timer
Set S1 = Sheets("TOPLAM LİSTE")
Set S2 = Sheets("HARCAMA")
Set d = CreateObject("Scripting.Dictionary")
Set d1 = CreateObject("Scripting.Dictionary")
Set d2 = CreateObject("Scripting.Dictionary")

a = S2.Range("A2:C" & S2.Cells(Rows.Count, 1).End(3).Row)

For i = 1 To UBound(a)
    d(a(i, 1) & "|" & a(i, 2)) = d(a(i, 1) & "|" & a(i, 2)) + a(i, 3)
    d1(a(i, 2)) = ""
    d2(a(i, 1)) = ""
Next i
liste = d1.keys
     For i = 1 To UBound(liste) - 1
        For k = i + 1 To UBound(liste)
            If liste(i) > liste(k) Then
                y = liste(k)
                liste(k) = liste(i)
                liste(i) = y
            End If
        Next k
    Next i
    
    S1.Cells.Clear
    On Error Resume Next
    S1.[B1].Resize(, d1.Count) = liste
    S1.[a2].Resize(d2.Count) = Application.Transpose(d2.keys)
    b = S1.Range("A2").Resize(d2.Count).Value
    c = S1.Range("B1").Resize(, d1.Count).Value
    
ReDim e(1 To UBound(b), 1 To d1.Count + 1)
For i = 1 To UBound(b)
    Say = Say + 1
    For x = 1 To UBound(c, 2)
        e(Say, x) = d(b(i, 1) & "|" & c(1, x))
        e(Say, UBound(c, 2) + 1) = e(Say, UBound(c, 2) + 1) + e(Say, x)
    Next x
Next i

    S1.[a1] = "İller"
    S1.[a2].Offset(UBound(b)) = "Toplam"
    S1.[B1].Offset(, d1.Count) = "Toplam"
    S1.[B2].Resize(Say, UBound(c, 2) + 1) = e
    
For x = 1 To UBound(c, 2) + 1
    S1.[B2].Offset(UBound(b), x - 1) = Application.Sum(Application.Index(e, , x))
Next x

For k = 1 To d1.Count + 2
    S1.[a1].Offset(, k - 1).Resize(d1.Count + 1).BorderAround Weight:=xlThin
Next
S1.[a1].Offset(d1.Count).Resize(, d2.Count + 3).BorderAround Weight:=xlThin

MsgBox "İşleminiz Tamamlandı." & vbLf & vbLf & _
        "Süre : " & Format(Timer - t, "0.00"), vbInformation
End Sub
 

Ekli dosyalar

emeği geçen herkeze teşekkür ediyorum.son verilen kod çok daha işime yarayacak.sonraki aşamada tamda bu şekilde çalışacak kod ricasında bulunacaktım.teşekkürler..
 
@sakman26
şu anda sizin dosyanızı kullanıyorum.elinize sağlık.mevcut örnek dosyaya "aylık harcama"diye bir sayfa daha ekledim.bu sayfada aylık yada benim belirleyeceğim tarihler arasındaki harcamaların toplamını göstermesini istiyorum.bir kaç deneme yaptım ama beceremedim.aynı formülü uyguladım tarih sütununu topluyor.söylediğim gibi düzenleme yapmanız mümkünmü?örnek dosya linkte.
 

Ekli dosyalar

@sakman26
çok uğraştım ama verdiğiniz örnek dosyayı kendi dosyama uyarlayamadım,bu konuda yardımcı olmanız mümkünmü?
 
zaten kendi dosyanıza uyarlayın demedim ki.
Şekil değişikliğine uğradı yeniden düzenlendi dedim.
Kendi dosyanızda tarih aralığı nereden alınacak, neye göre alınacak?
 
kendi dosyamda tarih alanı d sütunu.girilen tarih aralığına göre "aylık harcama"sayfasında gösterilmesini istiyorum ama bu mümkünmü bilmiyorum.
 
@sakman26
çok teşekkür ederim.örnek dosyayı kendi tabloma göre düzenledim.ayrıca topla.çarpım fonksiyonunuda inceledim.
 
rica ederim..
kolay gelsin..
 
Geri
Üst