ERMAN SAYINALP
Altın Üye
- Katılım
- 11 Eylül 2008
- Mesajlar
- 173
- Excel Vers. ve Dili
- Excel 2016 Türkçe
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Dosyayı inceleyiniz.
Sub Listele()
Application.ScreenUpdating = False '???Kod çalışırken ekrana yansımasın.
son = Cells(Rows.Count, 2).End(3).Row + 1 '???Temizlemek için dolu olan son satırı buluyoruz. +1 koydum eğer sayfada veri yoksa 2. satırı silmesin diye
Range("B3:E" & son).ClearContents '??? Önceki listelenen verileri temizle
süt = Range("F2") + 4 '??? ayın hangi sütunda olduğunu buluyor. Ocak E sütununda olduğu içinE sütunu 5 demektir
sat = 3 '??? İlk verinin yazılacağı satır 3 olduğu için satır değerini tanımladık. 10. satırdan itibaren listelemek isteseydik sat=10 derdik
For i = 1 To Sheets.Count - 1 '??? Liste sayfası sonda olmalı. Kaç sayfa varsa Liste hariç döngüye aldık
son = Sheets(i).Cells(Rows.Count, 2).End(3).Row '??? Sayfalardaki en sondolu satır değerini buluyoruz
For j = 3 To son '??? veri satırı kadar döngüye aldık
Cells(sat, 2) = Sheets(i).Cells(j, 2).Value '???Verileri hücrelere yazdırıyoruz.
Cells(sat, 3) = Sheets(i).Cells(j, 3).Value '???Verileri hücrelere yazdırıyoruz.
Cells(sat, 5) = Sheets(i).Cells(j, süt).Value '???Verileri hücrelere yazdırıyoruz.
sat = sat + 1 bir alt satıra yazması için sat değerini 1 arttırıyoruz.
Next
Next
End Sub
Tek sayfa var burada.
Sub Listele()
Application.ScreenUpdating = False
Sheets("S001").Select
son = Cells(Rows.Count, 2).End(3).Row + 1
Range("B3:E" & son).ClearContents
süt = Range("F2") + 4
sat = 3
For i = 1 To Sheets.Count
If Sheets(i).Name = "RCTGRS" Or Sheets(i).Name = "RCTRPR" Or Sheets(i).Name = "DGRMLZ" Then
son = Sheets(i).Cells(Rows.Count, 2).End(3).Row
For j = 3 To son
Cells(sat, 2) = Sheets(i).Cells(j, 2).Value
Cells(sat, 3) = Sheets(i).Cells(j, 3).Value
Cells(sat, 5) = Sheets(i).Cells(j, süt).Value
sat = sat + 1
Next
End If
Next
End Sub
Örnek Dosyadaki görsel, Veri alınacak sayfaların orjinal Konumunu göstermek amaçlıdır. Görselde de göreceğiniz üzere, E18 ile S18 sütun aralığında, aşağıya doğru ise 1000 satır aralığında olduğunu göstermek amaçlıdır.
Veri içeren Sayfa adları da ardışık olmayan, RCTGRS, RCTRPR, DGRMLZ isimleri ile tanımlanmıştır. Verilerin taşınacağı Sayfa adı ise S001 ile tanımlanmıştır. Veri Sayfaları ile Taşınacak Sayfa ardışık olmayıp, birbirinden uzak yerlerde sıralanmıştır.
Verilerin taşınacağı Sayfada ise alan aralığı D20 : G1169 dur.
Açıklamaya çalıştım, yeterli oldu mu bilemedim.
Sub VeriKopyala()
Dim wsRCTGRS As Worksheet
Dim wsRCTRPR As Worksheet
Dim wsDGRMLZ As Worksheet
Dim wsS001 As Worksheet
Dim lastRowS001 As Long
Dim sourceRange As Range
Dim destRange As Range
' Kaynak çalışma sayfalarını belirle
Set wsRCTGRS = ThisWorkbook.Sheets("RCTGRS")
Set wsRCTRPR = ThisWorkbook.Sheets("RCTRPR")
Set wsDGRMLZ = ThisWorkbook.Sheets("DGRMLZ")
' Hedef çalışma sayfasını belirle
Set wsS001 = ThisWorkbook.Sheets("S001")
' "S001" sayfasındaki son boş hücrenin satırını bul
lastRowS001 = wsS001.Cells(wsS001.Rows.Count, "D").End(xlUp).Row + 1
' RCTGRS sayfasındaki veri girişi yapılmış satırları kopyala ve S001 sayfasında "D" sütununda yapıştır
Set sourceRange = wsRCTGRS.Range("A1").CurrentRegion
Set destRange = wsS001.Cells(lastRowS001, "D")
sourceRange.Copy destRange
' "S001" sayfasındaki son boş hücrenin satırını güncelle
lastRowS001 = wsS001.Cells(wsS001.Rows.Count, "D").End(xlUp).Row + 1
' RCTRPR sayfasındaki veri girişi yapılmış satırları kopyala ve S001 sayfasında "D" sütununda yapıştır
Set sourceRange = wsRCTRPR.Range("A1").CurrentRegion
Set destRange = wsS001.Cells(lastRowS001, "D")
sourceRange.Copy destRange
' "S001" sayfasındaki son boş hücrenin satırını güncelle
lastRowS001 = wsS001.Cells(wsS001.Rows.Count, "D").End(xlUp).Row + 1
' DGRMLZ sayfasındaki veri girişi yapılmış satırları kopyala ve S001 sayfasında "D" sütununda yapıştır
Set sourceRange = wsDGRMLZ.Range("A1").CurrentRegion
Set destRange = wsS001.Cells(lastRowS001, "D")
sourceRange.Copy destRange
' Kopyalama işlemi tamamlandığında mesaj kutusu göster
MsgBox "Kopyalama işlemi sorunsuz tamamlandı.", vbInformation
End Sub