Microsoft Excel'de VBA kullanarak her sayfadan bir aralığı tek bir sayfaya kopyalayın

Anonim

Bu yazımızda, çalışma kitabındaki tüm sayfalardaki verileri yeni bir sayfaya kopyalamak için bir makro oluşturacağız.

Bu örnek için ham veriler, farklı sayfalardaki farklı departmanlardan gelen çalışan ayrıntılarından oluşur. Çalışan ayrıntılarını tek bir sayfada birleştirmek istiyoruz.

Verilerin konsolidasyonu için “CopyRangeFromMultipleSheets” makrosu oluşturduk. Bu makro “Consolide data” butonu tıklanarak çalıştırılabilir.

Makro, yeni bir çalışma sayfası oluşturacak ve tüm çalışma sayfalarından birleştirilmiş verileri ekleyecektir.

Kod açıklaması

"Ana" sayfanın var olup olmadığını kontrol etmek için tüm sayfalar arasında 'döngü'.

ThisWorkbook.Worksheets'teki Her Kaynak İçin

Source.Name = "Usta" ise

MsgBox "Ana sayfa zaten var"

Alt Çıkış

Bitir

Sonraki

Yukarıdaki kod, çalışma kitabında “Master” sayfasının olup olmadığını kontrol etmek için kullanılır. Çalışma kitabında “Master” sayfası varsa, kod çıkar ve bir hata mesajı görüntülenir.

Source.Range("A1").SpecialCells(xlSonHücre).Satır

Sayfadaki son hücrenin satır numarasını almak için yukarıdaki kod kullanılır.

Source.Range("A1", Range("A1").SpecialCells(xlLastCell)).Copy Destination.Range("A" & DestLastRow)

Belirtilen aralığı tanımlanan hücreye kopyalamak için yukarıdaki kod kullanılır.

Lütfen kod için aşağıdan takip edin

 Sub CopyRangeFromMultipleSheets() 'Değişkenleri Bildirme Dim Source As Worksheet Dim Destination As Worksheet Dim SourceLastRow, DestLastRow As Long Application.ScreenUpdating = False 'Bu Çalışma Kitabındaki Her Kaynak için "Master" sayfasının olup olmadığını kontrol etmek için tüm sayfalarda döngü. = "Ana" Sonra MsgBox "Ana sayfa zaten var" Çıkış Alt Sonsa Sonraki '"Ana" sayfadan sonra yeni bir sayfa ekleme Hedefi Ayarla = Çalışma Sayfaları.Add(after:=Sayfalar("Ana")) Hedef.Ad = " Ana" 'Bu Çalışma Kitabındaki Her Kaynak İçin Çalışma kitabındaki tüm sayfalarda döngü. .Range("A1").SpecialCells(xlLastCell).Row Source.Source.UsedRange.Count > 1 ise Etkinleştir DestLastRow = Sheets("Master").Range("A1").SpecialCells(xlLastCell).Row If DestLastRow = 1 Ardından 'kaynak sayfadan hedef sayfaya veri kopyalama Source.Range("A 1", Range("A1").SpecialCells(xlLastCell))).Copy Destination.Range("A" & DestLastRow) Başka Source.Range("A2", Range("A1").SpecialCells(xlCellTypeLastCell))).Copy Destination.Range("A" & (DestLastRow + 1)) End If End If End If Next Destination.Activate Application.ScreenUpdating = True End Sub 

Bu blogu beğendiyseniz, Facebook'ta arkadaşlarınızla paylaşın. Ayrıca bizi Twitter ve Facebook'ta da takip edebilirsiniz.

Sizden haber almayı çok isteriz, işimizi nasıl geliştirebileceğimizi ve sizin için nasıl daha iyi hale getirebileceğimizi bize bildirin. E-posta sitesinde bize yazın