• DİKKAT

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

Listedeki verileri aylarına göre diğer sayfalarda sıralama

Katılım
14 Haziran 2007
Mesajlar
142
Excel Vers. ve Dili
2007
Merhabalar,
Ekte bir tablo hazırlamaya çalışıyorum.
İsimlistesi sayfasında kişilerin isimleri ve çalışmış olduğu aylar yazılı.
Bu aylara göre diğer sayfalarda ait olduğu aylarda kişilerin isimlerini yazdırmaya çalışıyorum. Yaklaşım 4000 civarında kişi var ve tek tek bunu 12 ay için yapmamam benim bir haftamı alacaktır. Bu işlemle ilgili bir yardımcı olabilirseniz sevinirim.
 

Ekli dosyalar

Ekteki örnek dosyayı inceleyiniz.

Kod:
Option Explicit

Sub AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet, Sayfa As Worksheet
    Dim X As Long, Y As Byte, Satir As Long
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Set S1 = Sheets("isim listesi")
    Set S2 = Sheets("AY")
    
    For Each Sayfa In ThisWorkbook.Worksheets
        Select Case Sayfa.Name
            Case "isim listesi", "AY"
            Case Else
                Sayfa.Delete
        End Select
    Next
    
    Application.DisplayAlerts = True

    For X = 2 To S1.Cells(Rows.Count, 1).End(3).Row
        For Y = 2 To S1.Cells(1, 2).End(2).Column
            If S1.Cells(X, Y) <> "" Then
                If Not Sayfa_Varmi(S1.Cells(X, Y)) Then
                    S2.Copy , Sheets(Sheets.Count)
                    Set S3 = ActiveSheet
                    S3.Name = S1.Cells(X, Y)
                    Satir = 2
                Else
                    Set S3 = Sheets(CStr(S1.Cells(X, Y)))
                    Satir = S3.Cells(Rows.Count, 1).End(3).Row + 1
                
                End If
                
                S3.Cells(Satir, 1) = S1.Cells(X, Y)
                S3.Cells(Satir, 2) = S1.Cells(X, 1)
                Satir = Satir + 1
            End If
        Next
    Next
    
    S1.Select
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Function Sayfa_Varmi(Sayfa_Adi As String) As Boolean
    On Error Resume Next
    Sayfa_Varmi = CBool(Len(Worksheets(Sayfa_Adi).Name) > 0)
End Function
 

Ekli dosyalar

Ekteki örnek dosyayı inceleyiniz.

Kod:
Option Explicit

Sub AKTAR()
    Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet, Sayfa As Worksheet
    Dim X As Long, Y As Byte, Satir As Long
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    Set S1 = Sheets("isim listesi")
    Set S2 = Sheets("AY")
    
    For Each Sayfa In ThisWorkbook.Worksheets
        Select Case Sayfa.Name
            Case "isim listesi", "AY"
            Case Else
                Sayfa.Delete
        End Select
    Next
    
    Application.DisplayAlerts = True

    For X = 2 To S1.Cells(Rows.Count, 1).End(3).Row
        For Y = 2 To S1.Cells(1, 2).End(2).Column
            If S1.Cells(X, Y) <> "" Then
                If Not Sayfa_Varmi(S1.Cells(X, Y)) Then
                    S2.Copy , Sheets(Sheets.Count)
                    Set S3 = ActiveSheet
                    S3.Name = S1.Cells(X, Y)
                    Satir = 2
                Else
                    Set S3 = Sheets(CStr(S1.Cells(X, Y)))
                    Satir = S3.Cells(Rows.Count, 1).End(3).Row + 1
                
                End If
                
                S3.Cells(Satir, 1) = S1.Cells(X, Y)
                S3.Cells(Satir, 2) = S1.Cells(X, 1)
                Satir = Satir + 1
            End If
        Next
    Next
    
    S1.Select
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Function Sayfa_Varmi(Sayfa_Adi As String) As Boolean
    On Error Resume Next
    Sayfa_Varmi = CBool(Len(Worksheets(Sayfa_Adi).Name) > 0)
End Function


Yardımınız için çok teşekkür ederim.
Yazmış olduğunuz örnek işimi çok yaradı.

Merak ettiğim daha kısa bir kodla, makro olmayan bir çözümü daha var mıdır?
 
Merhaba,

Makro dışında dizi formüller ile ya da yardımcı sütun kullanılarak normal formüllerle önceden oluşturulmuş aylık sayfalara verileri aktarabilirsiniz. Fakat bunun için "isim listesi" sayfasındaki veri düzenini değiştirmenizde fayda var.

Aşağıdaki gibi bir düzen olursa formüllerle çözümler daha kolay üretilebilir.

Ad Soyad Ay

Yani verilerinizi iki sütunlu hale getirmelisiniz.

Bu ayarı yaptıktan sonra forumda formülle verileri ilgili sayfalara aktarma şeklinde aramalar yapın. Karşınıza örnekler çıkacaktır. Oradaki formülleri inceleyip dosyanıza uyarlamaya çalışın. Eğer yapamazsanız yardımcı olmaya çalışırım.
 
Merhaba,

Makro dışında dizi formüller ile ya da yardımcı sütun kullanılarak normal formüllerle önceden oluşturulmuş aylık sayfalara verileri aktarabilirsiniz. Fakat bunun için "isim listesi" sayfasındaki veri düzenini değiştirmenizde fayda var.

Aşağıdaki gibi bir düzen olursa formüllerle çözümler daha kolay üretilebilir.

Ad Soyad Ay

Yani verilerinizi iki sütunlu hale getirmelisiniz.

Bu ayarı yaptıktan sonra forumda formülle verileri ilgili sayfalara aktarma şeklinde aramalar yapın. Karşınıza örnekler çıkacaktır. Oradaki formülleri inceleyip dosyanıza uyarlamaya çalışın. Eğer yapamazsanız yardımcı olmaya çalışırım.

Yanıtlarınız için çok teşekkür ederim.
Ancak EĞER le, DÜŞEYARAY la, INDIS le, TOPLA.ÇARPIM la bir türlü başaramadım sizin makro ile yapmış olduğunuzu. Örnekleri inceledim ama benim sadece AY sabit verim olduğu için bir türlü başaramadım.
Bu olay beni oldukça aşacak gibi gözükmekte...
 
Yanıtlarınız için çok teşekkür ederim.
Ancak EĞER le, DÜŞEYARAY la, INDIS le, TOPLA.ÇARPIM la bir türlü başaramadım sizin makro ile yapmış olduğunuzu. Örnekleri inceledim ama benim sadece AY sabit verim olduğu için bir türlü başaramadım.
Bu olay beni oldukça aşacak gibi gözükmekte...

Bu siteden ve diğer excel forumlarından baktığım tüm örneklerde maalesef aradığım makrosuz sonuca ulaşamadım. Eğer bu konuyla ile ilgili yardımcı olursanız sevinirim.
 
Dediğim gibi formülle çözüm için "isim listesi" isimli sayfanızdaki formatı değiştirdim.

Ekteki örnek dosyayı inceleyiniz.

Uygulanan formüller dizi formülleridir.
 

Ekli dosyalar

Dediğim gibi formülle çözüm için "isim listesi" isimli sayfanızdaki formatı değiştirdim.

Ekteki örnek dosyayı inceleyiniz.

Uygulanan formüller dizi formülleridir.


Ustam ellerine sağlık.
Üstesinden gelebileceğim bir konu olmadığını tahmin ediyordum ki formülleri görünce 4 saattir boşa kürek çektiğimi gördüm.

Çok teşekkür ederim.
 
Dediğim gibi formülle çözüm için "isim listesi" isimli sayfanızdaki formatı değiştirdim.

Ekteki örnek dosyayı inceleyiniz.

Uygulanan formüller dizi formülleridir.

Ustam ellerine sağlık.
Üstesinden gelebileceğim bir konu olmadığını tahmin ediyordum ki formülleri görünce 4 saattir boşa kürek çektiğimi gördüm.

Çok teşekkür ederim.

Ustam yapmış olduğun formülü kendi excel sayfama aynı sütun ve satırlarda yapmama rağmen #SAYI hatası vermekte.
Senin formülleri kopyalayıp düzenlediğim zaman
{=EĞER(SATIR
formülündeki { ve } otomatik olarak siliniyor ve hemen #SAYI veriyor.

Bu işaretleri nasıl ekleyeceğim. Yardımcı olursan sevinirim.
 
Formülü hücreye yazın ve hücreyi CTRL+SHIFT+ENTER tuşlarına basarak terk edin. Bu şekilde formül çalışacaktır.
 
Geri
Üst