• DİKKAT

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

yatay formattaki bir tablodan bazı verileri Liste Haline dönüştürme

modoste

Altın Üye
Katılım
31 Mayıs 2008
Mesajlar
3,714
Excel Vers. ve Dili
Microsoft OFFİCE Ev ve İş 2019 TR
merhaba sayın hocalarım
ekli tabloda sorumu açıklamalarıyla belirttim.
ilk olarak formülle çözüm beklemekteyim alternatif olarak makrolu çözümlerde olabilir.
 

Ekli dosyalar

Merhaba,

Deneyiniz,
Kod:
=+TOPLA.ÇARPIM(($C$8:$C$13=$N$6)*($D$8:$D$13=L8)*($F$8:$F$13))
 
Tecrübeli bir kullanıcı olarak mevcut dosyanızın istediğiniz sonucu elde etmek için hiç de uygun olmadığını sizin de anlamış olduğunuzu düşünüyorum. Yol yakınken dosya yapınızı işleri daha kolay yapmanızı sağlayacak şekilde, veritabanı mantığıyla düz tablo haline dönüştürmenizi öneriyorum.
 
Mahir Hocam
F sütunundaki toplamları değil
C D ve F sütunlarının bulunmasını istiyorum

şirketimizdeki mazotları yazan arkadaş bu formatta bir tablo belirlediğinden ben devamında bir listeye yazıp verileri çektiriyorum ancak geçmiş aylardaki bu formattaki tablodan listeye nasıl geçebilirim bunu sordum hocam
 
Pardon ben tam tersini düşündüm.
Sn. Yusuf beyin önerisine bende katılıyorum.
Dosya yapınızda değişiklik yapılması daha uygun olacaktır. Bu haliyle dosyaya hükmekmek sanıldığı kadarda kolay olmaz.
 
ekli dosyamdaki sağ taraftaki tabloyu sol tarafta liste haline getirmekle ilgili bir soru
ama bazen size gelen yada başkasının yaptığı formata müdahale edemiyosunuz amiriniz yok buna alıştık bundan devam edelim diyor kalıyosunuz.
 
Bence güzel bir veri giriş formuyla birlikte hızlı rapor özellikleri eklediğiniz bir örnek dosya gösterirseniz amiriniz de bize hak verecektir.
 
Ek olarak zaten bir kerelik bir dönüşüm olacaksa formülle debelenmeye gerek yok. Patlatın makroyu gitsin... 229354
 
bir defalık çözüm olcak zaten Korhan Hocam
makrolu çözüm bekliyorum zaten ama formüllü çözüm olabiliyorsa bu gibi tabloalrı yataya çevirebilmek için dönüştürme yapabilirim diye düşünüyorum
 
size kısa bir halini gönderdiğim dosyanın kendisinde OCAK-TEMMUZ a kadar sekmelerde hep aynı bu tablodan var ve yaklaşık 200 satırdan oluşan ve (31 gün desek, her bir gün için 6 sütun ayrılmış) = 186 sütunluk bir tablodan işlemler yapılmış ve hatalar olmuş
bende bunları liste haline çevrilebilirse kolay bir çözümleme yapıp hataları bulabilirim diye düşündüm. bu yüzden foruma ilettim sorumu
 
Formülle çözüm bulunsa bile büyük ihtimalle bu kadar çok sütun için dosyada yavaşlama durumu gerçekleşecektir.

Bu sebeple amacınız eğer bu tablodan kurtulup temiz ve kontrol edilebilir bir liste elde etmekse makro en temiz çözüm yolu olacaktır.
 
@modoste , VBA kullanılan ekli dosya isteğinizi karşılayacaktır sanırım....

.
 

Ekli dosyalar

şimdi farkettim. Haluk hocam yanıt gelmedi diye bırakmıştım sorumu.
Makroyu en geniş aralık için uyguladım sonuçlarda hata yok
Teşekkür ederim.
 
Alternatif;

Hız olarak avantaj sağlayacaktır.

C++:
Option Explicit

Sub Create_List_From_Horizontal_Table()
    Dim My_Data As Variant, Last_Row As Long, Last_Column As Integer, X As Long, Y As Integer
    Dim First_Date As Date, End_Date As Date, Record_Count As Long, Proccess_Time As Double
    
    Proccess_Time = Timer
    
    Range("C8:G" & Rows.Count).ClearContents
    
    First_Date = Range("C5").Value
    End_Date = Range("G5").Value
    
    Last_Row = Cells(Rows.Count, "L").End(3).Row
    If Last_Row < 9 Then Last_Row = 9
    
    Last_Column = Cells(7, Columns.Count).End(1).Column
    
    My_Data = Range("J6:" & Cells(Last_Row, Last_Column).Address(0, 0))
    
    ReDim My_List(1 To Rows.Count, 1 To 5)
    
    For X = 3 To UBound(My_Data, 1)
        If My_Data(X, 3) <> "" Then
            For Y = 18 To Last_Column Step 6
                If My_Data(1, Y - 13) >= First_Date And My_Data(1, Y - 13) <= End_Date Then
                    If My_Data(X, Y - 9) <> "" Then
                        Record_Count = Record_Count + 1
                        My_List(Record_Count, 1) = CDate(My_Data(1, Y - 13))
                        My_List(Record_Count, 2) = My_Data(X, 3)
                        My_List(Record_Count, 4) = My_Data(X, Y - 9)
                    End If
                End If
            Next
        End If
    Next
    
    If Record_Count > 0 Then
        Range("C8").Resize(Record_Count, 5) = My_List
        MsgBox "Your transaction is complete." & vbCr & vbCr & _
               "Processing time ; " & Format(Timer - Proccess_Time, "0.00") & " Second"
    Else
        MsgBox "No suitable records found.", vbExclamation
    End If
End Sub
 
Teşekkür ederim Korhan Hocam
 
Geri
Üst