DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
bu örneklerin çoğuna baktım ama istediğimi yapmak için dosyama uyarlayamadım. ana sayfa hariç listeleme yapmam lazım.Arama menüsünde bolca örnek var. Bunlardan faydalanabilir misiniz?
https://www.excel.web.tr/search/223435/?page=2&q=sayfa+birleştirme&o=date
Bu sonuçlardan birinde Korhan beyin güzel bir çalışması var. Dosyanıza göre uyarlayabilirsiniz.
https://www.excel.web.tr/threads/makro-ile-birden-fazla-sayfayi-birlestirme.188294/
evet ikinci link işimi görecek ama "ana sayfa" hariç yapamadım hala uğraşıyorum. inşallah başarırım.Çoğuna bakmış olabilirsiniz.
Veridğim ikinci link sizinkine çok benziyor.
Biraz denemeden, uğraş vermeden, yanlış yapmadan basit işlemleri yapar hale gelemezsiniz. Çekinmeyin cesaretli olun, deneyin.
Farklar aslında aşıdaki gibi. Neredeyse hiç fark yok
Sizdeki Örnekteki
Ana Sayfa Data
100 satır Önemi yok
Sütun belli değil Önemi Yok
Sub Sayfalari_Birlestir().
Buradaki dosyayı kullanabilirsiniz.
.
Hocam selamlar peki sayfa isimlerinide başlara yazdırmak mümkünmü benim için sayfa isimleride önemli?.
Buradaki dosyayı kullanabilirsiniz.
.
Option Explicit
Sub Consolidate_All_Sheets()
Dim WS As Worksheet, WS_Data As Worksheet, Last_Row As Long
Application.ScreenUpdating = False
On Error Resume Next
Application.DisplayAlerts = False
Sheets("DATA").Delete
Application.DisplayAlerts = True
On Error GoTo 0
Set WS_Data = Sheets.Add(, Sheets(Sheets.Count))
WS_Data.Name = "DATA"
For Each WS In ThisWorkbook.Worksheets
If WS.Name <> "DATA" Then
If WS.AutoFilterMode Then
On Error Resume Next
WS.ShowAllData
On Error GoTo 0
End If
If WS_Data.Range("A1") = "" Then
WS.Range("A1:Z1").Copy WS_Data.Range("B1")
WS_Data.Range("A1") = "Kaynak Sayfa Adı"
WS_Data.Range("A1").Font.Bold = True
End If
Last_Row = WS_Data.Cells(WS_Data.Rows.Count, 2).End(3).Row + 1
WS_Data.Range("A" & Last_Row).Resize(WS.Cells(WS.Rows.Count, 1).End(3).Row - 1) = WS.Name
WS.Range("A2:Z" & WS.Cells(WS.Rows.Count, 1).End(3).Row).Copy _
WS_Data.Cells(WS_Data.Rows.Count, 2).End(3)(2, 1)
End If
Next
WS_Data.Columns.AutoFit
Set WS_Data = Nothing
Application.ScreenUpdating = True
MsgBox "Sayfalar konsolide edilmiştir.", vbInformation
End Sub
çok teşekkür ederim ellerinize sağlıkAşağıdaki kod dosya içindeki tüm sayfaların içindeki verileri DATA adında yeni bir sayfa ekleyerek alt alta aktarır. Aktarılacak hücre aralığı olarak A:Z sütun aralığını tanımladım. Siz dilediğiniz gibi değiştirebilirsiniz.
C++:Option Explicit Sub Consolidate_All_Sheets() Dim WS As Worksheet, WS_Data As Worksheet, Last_Row As Long Application.ScreenUpdating = False On Error Resume Next Application.DisplayAlerts = False Sheets("DATA").Delete Application.DisplayAlerts = True On Error GoTo 0 Set WS_Data = Sheets.Add(, Sheets(Sheets.Count)) WS_Data.Name = "DATA" For Each WS In ThisWorkbook.Worksheets If WS.Name <> "DATA" Then If WS.AutoFilterMode Then WS.ShowAllData If WS_Data.Range("A1") = "" Then WS.Range("A1:Z1").Copy WS_Data.Range("B1") WS_Data.Range("A1") = "Kaynak Sayfa Adı" WS_Data.Range("A1").Font.Bold = True End If Last_Row = WS_Data.Cells(WS_Data.Rows.Count, 2).End(3).Row + 1 WS_Data.Range("A" & Last_Row).Resize(WS.Cells(WS.Rows.Count, 1).End(3).Row - 1) = WS.Name WS.Range("A2:Z" & WS.Cells(WS.Rows.Count, 1).End(3).Row).Copy _ WS_Data.Cells(WS_Data.Rows.Count, 2).End(3)(2, 1) End If Next WS_Data.Columns.AutoFit Set WS_Data = Nothing Application.ScreenUpdating = True MsgBox "Sayfalar konsolide edilmiştir.", vbInformation End Sub
Aşağıdaki kod dosya içindeki tüm sayfaların içindeki verileri DATA adında yeni bir sayfa ekleyerek alt alta aktarır. Aktarılacak hücre aralığı olarak A:Z sütun aralığını tanımladım. Siz dilediğiniz gibi değiştirebilirsiniz.
C++:Option Explicit Sub Consolidate_All_Sheets() Dim WS As Worksheet, WS_Data As Worksheet, Last_Row As Long Application.ScreenUpdating = False On Error Resume Next Application.DisplayAlerts = False Sheets("DATA").Delete Application.DisplayAlerts = True On Error GoTo 0 Set WS_Data = Sheets.Add(, Sheets(Sheets.Count)) WS_Data.Name = "DATA" For Each WS In ThisWorkbook.Worksheets If WS.Name <> "DATA" Then If WS.AutoFilterMode Then WS.ShowAllData If WS_Data.Range("A1") = "" Then WS.Range("A1:Z1").Copy WS_Data.Range("B1") WS_Data.Range("A1") = "Kaynak Sayfa Adı" WS_Data.Range("A1").Font.Bold = True End If Last_Row = WS_Data.Cells(WS_Data.Rows.Count, 2).End(3).Row + 1 WS_Data.Range("A" & Last_Row).Resize(WS.Cells(WS.Rows.Count, 1).End(3).Row - 1) = WS.Name WS.Range("A2:Z" & WS.Cells(WS.Rows.Count, 1).End(3).Row).Copy _ WS_Data.Cells(WS_Data.Rows.Count, 2).End(3)(2, 1) End If Next WS_Data.Columns.AutoFit Set WS_Data = Nothing Application.ScreenUpdating = True MsgBox "Sayfalar konsolide edilmiştir.", vbInformation End Sub
ÇOKTEŞEKKÜRLER ELİNİZE EMEĞİNİZE SAĞLIKPaylaştığım kod da küçük bir revize yaptım. Tekrar deneyiniz.