Bu yazımızda, belirtilen tarih aralığına göre ham veri çalışma sayfasından yeni bir çalışma sayfasına veri çıkarmak için bir makro oluşturacağız.
Ham veriler üç sütundan oluşur. İlk sütun tarihleri içerir, ikinci sütun acente adlarını içerir ve üçüncü sütun bir acente tarafından o tarihte yapılan satış numaralarını içerir.
Makroyu çalıştırmadan önce, bir kullanıcıdan iki giriş gereklidir. Kullanıcı başlangıç ve bitiş tarihini tanımlamalıdır. Belirtilen tarihlere bağlı olarak makro, tanımlanan tarih aralığı arasındaki verileri yeni bir çalışma sayfasına çıkaracaktır.
Başlangıç ve bitiş tarihlerini belirledikten sonra, makroyu çalıştırmak için kullanıcının “Gönder” düğmesine tıklaması gerekir.
Makroyu çalıştırırken, "RawData" sayfasındaki verileri tarih sütununa göre sıralayacak ve belirtilen tarih aralığına göre verileri yeni eklenen çalışma sayfasına ayıklayacaktır.
Mantıksal açıklama
Makro, sırasıyla J8 ve J9 hücrelerinden başlangıç ve bitiş tarihleri için girdi alır. Bu makro öncelikle “RawData” sayfasındaki verileri A sütununa göre artan düzende sıralar. Tanımlanan aralık için filtre uyguladıktan sonra verileri tek bir aralıkta kopyalayabilmemiz için verileri tarih değerlerine göre sıraladık.
Verileri sıraladıktan sonra filtreyi üzerine uygulayın. Uygulanan filtre iki koşula dayanmaktadır; birinci koşul, A sütunundaki değerin başlangıç tarihinden büyük veya ona eşit olması ve ikinci koşul, A sütunundaki değerin bitiş tarihinden küçük veya ona eşit olmasıdır.
Filtre uygulandıktan sonra yeni çalışma sayfası eklenir ve filtrelenen veriler kopyalanır ve içine yapıştırılır.
Kod açıklaması
Range("A1").CurrentRegion.Sort key1:=Range("A1"), order1:=xlArtan, Başlık:=xlEvet
Yukarıdaki kod, tanımlanan aralıktaki verileri sıralamak için kullanılır. Anahtar1, hangi verilerin sıralanacağını temel alan sütunu belirtir. Sıralama düzeni order1 ile sağlanır. Artan sırayı zaten tanımladık. Azalan düzeni tanımlamak için xlDescending sabiti kullanılabilir. Başlık, veri aralığının başlığı içerip içermediğini belirtmek için kullanılır.
Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate
Yukarıdaki kod, veri aralığına filtre uygulamak için kullanılır. Alan1, filtrenin uygulanacağı sütun numarasını belirtir. Ölçüt1 ve Ölçüt2, verilerin filtreleneceği koşulları tanımlar. Operatör, iki koşul arasında kullanılacak operatörü belirtir.
Worksheets.Add after:=Worksheets(Worksheets.Count)
Yukarıdaki kod, yeni çalışma sayfasını çalışma kitabındaki son çalışma sayfasından sonra eklemek için kullanılır.
Makroda kodlarla birlikte yorum da koyduğum için kodlar kolayca anlaşılabilir.
Lütfen kod için aşağıdan takip edin
Sub CopyDataBasedOnDate() 'Ekran güncellemelerini devre dışı bırakma Application.ScreenUpdating = False 'Tarih veri tipinin iki değişkenini bildirme Dim StartDate, EndDate As Date 'Çalışma sayfası nesnesi için değişken bildirme Dim MainWorksheet Çalışma Sayfası 'Tarih değişkenlerini J8 hücresinden başlangıç tarihi ile başlatma 've "Makro" sayfasının J9 hücresinden bitiş tarihi StartDate = Sheets("Makro").Range("J8").Value EndDate = Sheets("Makro").Range("J9").Value 'Çalışma sayfası nesnesi " ile başlatılıyor RawData" çalışma sayfası Set MainWorksheet = Worksheets("RawData") 'MainWorksheet çalışma sayfası nesnesini etkinleştirme. 'A sütunundaki verileri artan düzende tarihe göre sıralama Range("A1").CurrentRegion.Sort _ key1:=Range("A1 "), order1:=xlAscending, _ Header:=xlYes 'Verileri başlangıç tarihi ile bitiş tarihi arasındaki tarih aralığına göre filtreleyin Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _ ">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate 'Filtre verilerini kopyalayın ActiveSheet.AutoFilter.Range.Copy 'Yeni wor ekleme Worksheets.Add after:=Worksheets(Worksheets.Count) 'Kopyalanan veriyi yapıştırma ActiveSheet.Paste 'Seçili sütunların boyutunu otomatik ayarlama Selection.Columns.AutoFit Range("A1").Select ' "RawData" sayfasını etkinleştirme MainWorksheet.Activate 'Daha önce uyguladığımız çalışma sayfasından 'Filtreyi Kaldırma Selection.AutoFilter Sheets("Makro").Activate 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