DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Örnek dosyanızda "başlıklar birebir aynı" demişsiniz ama sadece Sıra, Tarih, Kimin servisi ve Servis numarası başlıkları data sayfasında da aynen bulunuyor. Diğer sütunların başlıkları farklı.
Dosyanızda nasıl bir çözüm istiyorsunuz? Nereye ne yapıldığında nerede ne olması gerekiyor?
Dosyanızda örnek birkaç çözüm paylaşırsanız iyi olur.
Sub aktar()
Set s1 = Sheets("DATA")
Set s2 = Sheets("EK SERVİS & TAKSİ")
son = WorksheetFunction.Max(3, s1.Cells(Rows.Count, "Q").End(3).Row)
For i = 3 To son
If s1.Cells(i, "Q") = "Taksi" Or Cells(i, "Q") = "Ek Servis" Then
yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
s2.Cells(yeni, "A") = s1.Cells(i, "A")
s2.Cells(yeni, "B") = s1.Cells(i, "B")
s2.Cells(yeni, "C") = s1.Cells(i, "U")
s2.Cells(yeni, "F") = s1.Cells(i, "R")
s2.Cells(yeni, "G") = s1.Cells(i, "S")
s2.Cells(yeni, "H") = s1.Cells(i, "T")
s2.Cells(yeni, "I") = s1.Cells(i, "C")
s2.Cells(yeni, "J") = s1.Cells(i, "D")
s2.Cells(yeni, "L") = s1.Cells(i, "X")
With s2.Range("A" & yeni & ":L" & yeni).Font
.Name = "Calibri"
.Size = 8
End With
s2.Range("A" & yeni & ":L" & yeni).Borders.LineStyle = xlContinuous
s2.Range("A" & yeni & ":L" & yeni).Borders.Weight = xlHairline
s1.Cells(yeni, "B").NumberFormat = "dd/mm/yyyy"
With s2.Range("A" & yeni & ":L" & yeni)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End If
Next
End Sub
Aaşğıdaki kodları bir modüle kopyalayıp deneyiniz. Kodlar Data sayfasındaki her satırı ayrı ayrı kontrol eder, Q sütununda Ek Servis ya da Taksi yazan satırdaki bilgileri diğer sayfaya belirttiğiniz şekilde aktarır. Makronun doğru çalışması için Q sütununa veriler aynen kodda yazıldığı gibi dirilmelidir, büyük-küçük harf duyarlıdır:
Kod:Sub aktar() Set s1 = Sheets("DATA") Set s2 = Sheets("EK SERVİS & TAKSİ") son = WorksheetFunction.Max(3, s1.Cells(Rows.Count, "Q").End(3).Row) For i = 3 To son If s1.Cells(i, "Q") = "Taksi" Or Cells(i, "Q") = "Ek Servis" Then yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1 s2.Cells(yeni, "A") = s1.Cells(i, "A") s2.Cells(yeni, "B") = s1.Cells(i, "B") s2.Cells(yeni, "C") = s1.Cells(i, "U") s2.Cells(yeni, "F") = s1.Cells(i, "R") s2.Cells(yeni, "G") = s1.Cells(i, "S") s2.Cells(yeni, "H") = s1.Cells(i, "T") s2.Cells(yeni, "I") = s1.Cells(i, "C") s2.Cells(yeni, "J") = s1.Cells(i, "D") s2.Cells(yeni, "L") = s1.Cells(i, "X") With s2.Range("A" & yeni & ":L" & yeni).Font .Name = "Calibri" .Size = 8 End With s2.Range("A" & yeni & ":L" & yeni).Borders.LineStyle = xlContinuous s2.Range("A" & yeni & ":L" & yeni).Borders.Weight = xlHairline s1.Cells(yeni, "B").NumberFormat = "dd/mm/yyyy" With s2.Range("A" & yeni & ":L" & yeni) .HorizontalAlignment = xlCenter .VerticalAlignment = xlCenter End With End If Next End Sub
Sub aktar()
Set s1 = Sheets("DATA")
Set s2 = Sheets("EK SERVİS & TAKSİ")
son = WorksheetFunction.Max(3, s1.Cells(Rows.Count, "Q").End(3).Row)
For i = 3 To son
If s1.Cells(i, "Q") = "Taksi" Or Cells(i, "Q") = "Ek Servis" Then
yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
s2.Cells(yeni, "A") = s1.Cells(i, "A")
s2.Cells(yeni, "B") = s1.Cells(i, "B")
s2.Cells(yeni, "C") = s1.Cells(i, "U")
s2.Cells(yeni, "F") = s1.Cells(i, "R")
s2.Cells(yeni, "G") = s1.Cells(i, "S")
s2.Cells(yeni, "H") = s1.Cells(i, "T")
s2.Cells(yeni, "I") = s1.Cells(i, "C")
s2.Cells(yeni, "J") = s1.Cells(i, "D")
s2.Cells(yeni, "L") = s1.Cells(i, "X")
With s2.Range("A" & yeni & ":L" & yeni).Font
.Name = "Calibri"
.Size = 8
End With
s2.Range("A" & yeni & ":L" & yeni).Borders.LineStyle = xlContinuous
s2.Range("A" & yeni & ":L" & yeni).Borders.Weight = xlHairline
s1.Cells(yeni, "B").NumberFormat = "dd/mm/yyyy"
s2.Cells(yeni, "B").NumberFormat = "dd/mm/yyyy"
With s2.Range("A" & yeni & ":L" & yeni)
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
End With
End If
Next
End Sub
Makromuzun adı aktarKod:Sub aktar()
Kod:Set s1 = Sheets("DATA") Set s2 = Sheets("EK SERVİS & TAKSİ")
Dosyadaki sayfalara s1 ve s2 kısa adlarını atıyoruz.
s1 yani Data sayfasında Q sütununda son dolu hücrenin satır numarasın son değişkenine atıyoruz.Kod:son = WorksheetFunction.Max(3, s1.Cells(Rows.Count, "Q").End(3).Row)
Kod:End If Next End Sub
Daha önce açtığımız if ve next if satırlarını kapatıp makroyu sonlandırıyoruz.
Makroya buradan başlayabilirsiniz bence![]()