• DİKKAT

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

Raporlama Hakkında Yardım

Katılım
22 Ekim 2019
Mesajlar
20
Excel Vers. ve Dili
exel2010
Merhaba Arkadaşlar,
Yıl bazında tutmuş olduğum excelde hazırladığım yağ sarfiyat depom var.Burada aylık olarak hangi araç,hangi ay ne kadar yağ sarf etmiş onu formül ile yapabiliriyorum ama araç sayısı çoğaldıkça excel dosyası kasma yapıyor.Bu formülü kod ile veya pivot table ile yapmak için bana yardımcı olabilecek var mı?
 

Ekli dosyalar

Deneyiniz...

Kod:
Sub kod()
Dim s1 As Worksheet
Set s1 = Sheets("Sayfa1")
Application.ScreenUpdating = False
Set dc = CreateObject("scripting.dictionary")
son = s1.Cells(Rows.Count, 2).End(3).Row
a = s1.Range("A1:F" & son).Value

For i = 2 To UBound(a)
    krt = UCase(Replace(Replace(Format("1." & Month(a(i, 2)) _
          , "mmmm"), "i", "İ"), "ı", "I")) & "|" & a(i, 6)
    dc(krt) = dc(krt) + a(i, 4)
Next i

Erase a
son = 0
son = s1.Cells(Rows.Count, 10).End(3).Row
a = s1.Range("J2:V" & son).Value

ReDim v(1 To UBound(a), 1 To UBound(a, 2))
For i = 2 To UBound(a)
    say = say + 1
    For j = 2 To UBound(a, 2)
        krt = a(1, j) & "|" & a(i, 1)
        If dc.exists(krt) Then
            v(say, j - 1) = dc(krt)
        Else
            v(say, j - 1) = 0
        End If
    Next j
Next i

s1.[K3].Resize(say, UBound(a, 2) - 1) = v
Application.ScreenUpdating = True
MsgBox "İşlem bitti...", vbInformation
End Sub
 
Deneyiniz...

Kod:
Sub kod()
Dim s1 As Worksheet
Set s1 = Sheets("Sayfa1")
Application.ScreenUpdating = False
Set dc = CreateObject("scripting.dictionary")
son = s1.Cells(Rows.Count, 2).End(3).Row
a = s1.Range("A1:F" & son).Value

For i = 2 To UBound(a)
    krt = UCase(Replace(Replace(Format("1." & Month(a(i, 2)) _
          , "mmmm"), "i", "İ"), "ı", "I")) & "|" & a(i, 6)
    dc(krt) = dc(krt) + a(i, 4)
Next i

Erase a
son = 0
son = s1.Cells(Rows.Count, 10).End(3).Row
a = s1.Range("J2:V" & son).Value

ReDim v(1 To UBound(a), 1 To UBound(a, 2))
For i = 2 To UBound(a)
    say = say + 1
    For j = 2 To UBound(a, 2)
        krt = a(1, j) & "|" & a(i, 1)
        If dc.exists(krt) Then
            v(say, j - 1) = dc(krt)
        Else
            v(say, j - 1) = 0
        End If
    Next j
Next i

s1.[K3].Resize(say, UBound(a, 2) - 1) = v
Application.ScreenUpdating = True
MsgBox "İşlem bitti...", vbInformation
End Sub
Çok teşekkür ederim.Galiba sorunum çözüldü.
 
Özet Tablo ile alternatif...

Tablonuza dinamik alan uygulaması yaptım. Tablonuza alta doğru dilediğiniz kadar satır ekleyebilirsiniz. Özet tablo bu satırları otomatik işleme alacaktır. Tabi bunun için özet tablo üzerinde sağ tıklayıp "YENİLE" komutunu çalıştırmanız gerekecektir.
 

Ekli dosyalar

Özet Tablo ile alternatif...

Tablonuza dinamik alan uygulaması yaptım. Tablonuza alta doğru dilediğiniz kadar satır ekleyebilirsiniz. Özet tablo bu satırları otomatik işleme alacaktır. Tabi bunun için özet tablo üzerinde sağ tıklayıp "YENİLE" komutunu çalıştırmanız gerekecektir.
Korhan Bey çok teşekkür ederim.İlginiz için.Yukardaki kod işimi gördü.
 
Özet Tablo ile alternatif...

Tablonuza dinamik alan uygulaması yaptım. Tablonuza alta doğru dilediğiniz kadar satır ekleyebilirsiniz. Özet tablo bu satırları otomatik işleme alacaktır. Tabi bunun için özet tablo üzerinde sağ tıklayıp "YENİLE" komutunu çalıştırmanız gerekecektir.
Alt Satıra başka bir araç eklediğimde pivot table a yazmıyor.Sanırım ben yapamadım.Yardımcı olabilirmisiniz?
 
Deneyiniz...

Kod:
Sub kod()
Dim s1 As Worksheet
Set s1 = Sheets("Sayfa1")
Application.ScreenUpdating = False
Set dc = CreateObject("scripting.dictionary")
son = s1.Cells(Rows.Count, 2).End(3).Row
a = s1.Range("A1:F" & son).Value

For i = 2 To UBound(a)
    krt = UCase(Replace(Replace(Format("1." & Month(a(i, 2)) _
          , "mmmm"), "i", "İ"), "ı", "I")) & "|" & a(i, 6)
    dc(krt) = dc(krt) + a(i, 4)
Next i

Erase a
son = 0
son = s1.Cells(Rows.Count, 10).End(3).Row
a = s1.Range("J2:V" & son).Value

ReDim v(1 To UBound(a), 1 To UBound(a, 2))
For i = 2 To UBound(a)
    say = say + 1
    For j = 2 To UBound(a, 2)
        krt = a(1, j) & "|" & a(i, 1)
        If dc.exists(krt) Then
            v(say, j - 1) = dc(krt)
        Else
            v(say, j - 1) = 0
        End If
    Next j
Next i

s1.[K3].Resize(say, UBound(a, 2) - 1) = v
Application.ScreenUpdating = True
MsgBox "İşlem bitti...", vbInformation
End Sub
kodu buton ile otomatik nasıl çalıştırabilirim.
 
Geri
Üst