Belli Sütündaki Veriye göre Excel sayfalarına ayırmak

Katılım
27 Aralık 2005
Mesajlar
53
Merhaba Arkadaşlar,

Bir excel çalışma kitabında; araç plakalarına ilişkin, çeşitli harcamaların listesini tutuluyor.

Bu liste normalde araç plakaların sıralı yazılmadığı ve 1 plakaya ait birden fazla harcamının bulunduğu karışık bir liste,

Macro ile yapmak istediğimiz şey;

Bu listenin bulduğu sayfayı "Data" diye isimlendirdik.
a ve f sütununu içeren bir tablo var, a sütunu sıralama sütunu

Data'nın E sütünunda (ilk satır hariç) yazan plakanın harcamalarının süzülüp, aynı çalışma kitabında farklı bir sayfaya işlenmesini istiyoruz.

Örneğin:

Data sayfasının E sütununda yazan 06 AAA 06 plakalı aracın tüm harcamalarının süzülüp, 06 AAA 06 isimli bir sayfa oluşturarak buraya yazılması.

İlgilenen arkadaşlara şimdiden çok teşekkürler, hakkınızı helal edin.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

İstediğiniz işlem elbette yapılabilir ancak tavsiyem; verileri tek sayfada tutmanız ve aşağıdaki yöntemlerden birini kullanarak işlem yapmanız yönünde.

Plaka bazında toplam/adet gibi hesaplamalar yapacaksanız, tablonuzun üst kısmında yeteri kadar boş satır/satırlar oluşturup, bu alanda;
-- ya filtrelenen alana ait özet bigiler elde etmek için ALTTOPLAM işlevini kullanarak işlem yapmanız,
-- ya da bir hücreye uygulanacak veri doğrulama listesinden plaka seçerek,
seçilen plakaya ait özet bilgilerin hesaplanması için ETOPLA/TOPLA.ÇARPIM/EĞERSAY gibi işlevleri kullanmanız
yerinde olur diye düşünüyorum.

Ayrıca; sorularınızı, afaki cümlelerle sormak yerine gerçek belgenizle aynı yapıda ve
gerçek belgedeki verileri temsil edebilecek nitelikte örnek veri içeren örnek belge üzerinden sormanızda yarar olduğunu belirtmeliyim.

Örnek belge yükleme yöntemine ilişkin kısa açıklama cevabımın altındaki İMZA bölümünde var.
.
 
Katılım
27 Aralık 2005
Mesajlar
53
Merhaba @Ömer Bey,

Cevabınız için teşekkürler.

Örnek dosyamızı belirtmiş olduğunuz siteye ekledim.
http://s7.dosya.tc/server2/ua7794/deneme.xlsx.html

Oluşturulacak sayfalar üzerinden farklı işlemler yapılacak olduğundan sayfaların ayrı ayrı oluşturulması bizim için önemli.

Macro işlem hususunda yardımcı olabilirseniz çok seviniriz.

Zahmetleriniz için ayrıca teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub plakatasnif()
Set s1 = Sheets("Data")
son = s1.Cells(Rows.Count, "E").End(3).Row
For i = 2 To son
    If WorksheetFunction.CountIf(s1.Range("E1:E" & i), Cells(i, "E")) = 1 Then
        For sayfa = 1 To Sheets.Count
            If Sheets(sayfa).Name = s1.Cells(i, "E") Then
                For j = i To son
                    If s1.Cells(j, "E") = s1.Cells(i, "E") Then
                        plaka = "var"
                        yeni = Sheets(sayfa).Cells(Rows.Count, "A").End(3).Row + 1
                        Sheets(sayfa).Cells(yeni, "A") = yeni - 1
                        s1.Range("B" & j & ":F" & j).Copy Sheets(sayfa).Cells(yeni, "B")
                        Sheets(sayfa).Columns.AutoFit
                        sayfa = Sheets.Count
                    End If
                Next
            Else
                plaka = "yok"
            End If
        Next
        If plaka = "yok" Then
            Sheets.Add after:=Sheets(Sheets.Count)
            ActiveSheet.Name = s1.Cells(i, "E")
            s1.[A1:F1].Copy ActiveSheet.[A1]
            For j = i To son
                If s1.Cells(j, "E") = s1.Cells(i, "E") Then
                    yeni = ActiveSheet.Cells(Rows.Count, "A").End(3).Row + 1
                    ActiveSheet.Cells(yeni, "A") = yeni - 1
                    s1.Range("B" & j & ":F" & j).Copy ActiveSheet.Cells(yeni, "B")
                    Sheets(sayfa).Columns.AutoFit
                End If
            Next
        End If
    End If
Next
End Sub
 
Üst