Excel VBA bir sayfadaki veriyi saydırarak diğer sayfaya adet olarak yazmak

Snowm

Hectopat
Katılım
22 Nisan 2020
Mesajlar
53
Çözümler
1
Alt alta satırlar halinde bir ilçeye ait veriler var.
Ör: Kadıköy / 2019 / 102 burada kadıköy ilçesine ait 2019 çıkışlı 102 adet ürün var demek. Bu veriyi diğer sayfadaki bir hücreye adet olarak yazdırmak istiyorum.
Yani önce ilk olarak hangi ilçe hangi yıla ait kaç adet ürün var bunu sayacak, sonra diğer sayfaya istediğim hücreye adedi yazacak.
 
SIRAŞEHİRİLÇEYILADET
1İSTANBULKADIKÖY201919
2İSTANBULÇATALCA202050
3İSTANBULKADIKÖY201820
4İSTANBULÜSKÜDAR201750
5İSTANBULKADIKÖY201912
6İSTANBULKARTAL202010
7İSTANBULKADIKÖY201811

Böyle bir tabloda yeni bir modül açıp şu kodları modül içerisine yapıştırın.
Kod:
Sub Makro2()
'
' Makro2 Makro
'

'
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sayfa1!R1C1:R1048576C5", Version:=6).CreatePivotTable TableDestination:= _
        "Sayfa3!R3C1", TableName:="PivotTable2", DefaultVersion:=6
    Sheets("Sayfa3").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable2")
        .ColumnGrand = True
        .HasAutoFormat = True
        .DisplayErrorString = False
        .DisplayNullString = True
        .EnableDrilldown = True
        .ErrorString = ""
        .MergeLabels = False
        .NullString = ""
        .PageFieldOrder = 2
        .PageFieldWrapCount = 0
        .PreserveFormatting = True
        .RowGrand = True
        .SaveData = True
        .PrintTitles = False
        .RepeatItemsOnEachPrintedPage = True
        .TotalsAnnotation = False
        .CompactRowIndent = 1
        .InGridDropZones = False
        .DisplayFieldCaptions = True
        .DisplayMemberPropertyTooltips = False
        .DisplayContextTooltips = True
        .ShowDrillIndicators = True
        .PrintDrillIndicators = False
        .AllowMultipleFilters = False
        .SortUsingCustomLists = True
        .FieldListSortAscending = False
        .ShowValuesRow = False
        .CalculatedMembersInFilters = False
        .RowAxisLayout xlCompactRow
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotCache
        .RefreshOnFileOpen = False
        .MissingItemsLimit = xlMissingItemsDefault
    End With
    ActiveSheet.PivotTables("PivotTable2").RepeatAllLabels xlRepeatLabels
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("ŞEHİR")
        .Orientation = xlPageField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("İLÇE")
        .Orientation = xlPageField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("YIL")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
        "PivotTable2").PivotFields("ADET"), "Toplam ADET", xlSum
    ActiveSheet.PivotTables("PivotTable2").AddDataField ActiveSheet.PivotTables( _
        "PivotTable2").PivotFields("SIRA"), "Toplam SIRA", xlSum
    With ActiveSheet.PivotTables("PivotTable2").PivotFields("Toplam SIRA")
        .Caption = "Say SIRA"
        .Function = xlCount
    End With
End Sub
 
Uyarı! Bu konu 6 yıl önce açıldı.
Muhtemelen daha fazla tartışma gerekli değildir ki bu durumda yeni bir konu başlatmayı öneririz. Eğer yine de cevabınızın gerekli olduğunu düşünüyorsanız buna rağmen cevap verebilirsiniz.

Technopat Haberler

Yeni konular

Geri
Yukarı