DİKEY BİR PİVOT TABLODA YER ALAN VERİNİN YATAYA ÇEVRİLMESİ

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
Selamlar üstadlar,

ekte göreceğiniz üzere günlük kullandığım veriden elde ettiğim pivot tablom tek bir sütun. bu Sütundaki veriyi yataya çevirmek istiyorum ama bir türlü, ne yaptıysam beceremedim.

sayfa 2 deki 1 numaralı çözüm işimi çok kolaylaştırır. desteğiniz için şimdiden teşekkür ederim.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Aşağıdaki kodları dosyanızda çalıştırabilrisiniz.
Sonuçları kontrol etmedim. Hata varsa söyleyin lütfen.
CoffeeScript:
Sub KodlaOzetAlma()
   Dim Arr1, Dict1 As Object, Arrival(), Liste()
   Arr1 = Worksheets("Sayfa1").Range("A1").CurrentRegion.Value
   Set Dict1 = CreateObject("Scripting.Dictionary")
   Worksheets("Sayfa2").Cells.Clear
   Worksheets("Sayfa2").Range("A1") = "Arrival"
   For i = 2 To UBound(Arr1)
      If Not Dict1.Exists(Arr1(i, 12)) Then
         Dict1.Add Arr1(i, 12), 1
         Say = Say + 1
         ReDim Preserve Arrival(1 To Say)
         Arrival(Say) = Arr1(i, 12)
      End If
   Next i
   Worksheets("Sayfa2").Range("A2").Resize(Say, 1) = Application.Transpose(Arrival)
   Worksheets("Sayfa2").Range("A1").Resize(Say, 1).Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlYes
   Arr2 = Worksheets("Sayfa2").Range("A2").Resize(Say, 1).Value
  
   For i = 1 To UBound(Arr2)
      Dict1.RemoveAll
      For k = 2 To UBound(Arr1)
         If Arr1(k, 12) = CDate(Arr2(i, 1)) Then
            If Not Dict1.Exists(Arr1(k, 3)) Then Dict1.Add Arr1(k, 3), 1
         End If
      Next k
      If Dict1.Count > 0 Then
         ReDim Liste(1 To 1, 1 To Dict1.Count)
         For k = 0 To Dict1.Count - 1
            Liste(1, k + 1) = Dict1.Keys()(k)
         Next k
         Worksheets("Sayfa2").Range("B" & i + 1).Resize(1, Dict1.Count) = Liste
         If MaxKolon < Dict1.Count Then MaxKolon = Dict1.Count
         Erase Liste
      End If
   Next i
   For i = 2 To MaxKolon + 1
      Worksheets("Sayfa2").Cells(1, i) = "PNR " & i - 1
   Next i
   Worksheets("Sayfa2").Columns.AutoFit
End Sub
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
Selam,
Farklı bir yol ile yatay hali ile ekte dosyanızı paylaşıyorum;
Şu şekilde ilerleyebilirsiniz; Sayfa1 de datanız var datanızın son sekmesine ekte de göreceğiniz üzere başlığa adet yazarak 1,2,3,4,5 diye numaralandırdım pivot kısmında satırlara arrival, sütunlara adet, değerlere ise pnr yi getirerek yatay olarak pivotu oluşturabilirsiniz. Fakat bu şekilde yaptığımızda boş satırlar olacaktır bunu da dikkate almakta fayda var.

İyi çalışmalar.
 

Ekli dosyalar

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
üstadım eline sağlık ,ama ben bunu yerleştirmedim :(
 
Katılım
17 Mart 2022
Mesajlar
281
Excel Vers. ve Dili
2016/Türkçe
Altın Üyelik Bitiş Tarihi
22-03-2023
@cifciugur kime yazdığınızı da etiketler iseniz yardımcı olalım.
Neyi yerleştiremediniz?
 

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
@cifciugur kime yazdığınızı da etiketler iseniz yardımcı olalım.
Neyi yerleştiremediniz?
ömer faruk bey'in attığı kodu yapamadım.

Sizin gönderdiğiniz dosyada ise boşlukları almam lazım , bu işlem benim sürekli tekrarladığım bir işlem daha pratik bir yolu var mıdır hocam?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
ömer faruk bey'in attığı kodu yapamadım.

Sizin gönderdiğiniz dosyada ise boşlukları almam lazım , bu işlem benim sürekli tekrarladığım bir işlem daha pratik bir yolu var mıdır hocam?
Yapamadığınız kısım neresidir?
Örnek dosyanızda boş bir module içine kodu ekleyip makroyu çalıştırdığınızda istediğiniz işemi yapabilmektedir.
 

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
Yapamadığınız kısım neresidir?
Örnek dosyanızda boş bir module içine kodu ekleyip makroyu çalıştırdığınızda istediğiniz işemi yapabilmektedir.
Yani şöyle söz konusu makroyu bir düğmeye bağlamak gerekiyor değil mi , bende olmadı. o bağlamda yapamadım dedim
 

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
Kodun butona ekledim. Sayfa1 de butona basınca sayfa2 de listeniz oluşuyor.
hocam o kadar güzel oldu ki , ellerinize emeklerinize sağlık. ayağınıza taş değmesin.

ancak ufacık bir maruzatım var olursa olur, olmazsa da sıkıntı değil. yeni veri kullandığımda makro çalıştıktan sonra sayfa 2 ye aldığı listede tarih sıralaması kayabiliyor.Örneğin; 20.08.2022 den sonra alt satırda 21.08.2022 yerine 19.08.2022 yazabiliyor gibi.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Tarih formatınız hatalı olabilir.
Değilse yeni verilerinizi görmem lazım.
 

cifciugur

Altın Üye
Katılım
30 Kasım 2012
Mesajlar
24
Excel Vers. ve Dili
Excel 2016- Türkçe
Altın Üyelik Bitiş Tarihi
03-11-2024
Tarih formatınız hatalı olabilir.
Değilse yeni verilerinizi görmem lazım.
muhtemelen formatta sıkıntı var o zaman , gerisini ben hallederim. tekrar çok çok teşekkür ederim.
 
Üst