Makro yardımı

Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Selamun Aleyküm

Herkeze kolay gelsin...

Arkadaşlar iki listem var arasında da bir sıra boşluk var. :yardim:

1) Üst listede olup alt listede olmayanları sayfa1'den silsin sayfa2'ye atsın.

2) Mükerrer olan kayıt.
Üst listede ve alt listede aynı olan kaydı ise sayfa1'den silsin Sayfa3'e atsın aynı zamanda farklı renge boyasın.

( ...Sesli Düşünürsem...)
Böylece;
sayfa2= (Reklamda var mağaza stokta yok)
sayfa3= (Mükerrer kayıtlar "YANİ REKLAM İÇİN SİPARİŞ AÇILACAKLAR")
kalan sayfa1= (Sipariş açılmayacaklar)
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Yardım edebilecek kimse yokmu arkadaşlar
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Kimse yardım etmeyecekmi.

O kadar zormu arkadaşlar.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Arkadaşım deminden beri inceliyorum ama kafam basmadı sanırım :) İlk başta yazdım bir kod ama, sonra yine okudum sorunu, kafam karıştı

Şimdi şöyle başlayalım

1.Sorun için : Senin esas karşılaştırmak istediğin üstteki liste öyle mi?

Üstteki listedeki herbir malın altta olup olmadığını mı kontrol edeceğiz?
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
evet aynen dediğin gibi üst liste asıl olan liste

üstte olup altta olmayanı sayfa2 ye atacak (sayfa1'den silecek)

eğer üst listedeki ile alt listedeki sıra aynı (mükerrer) ise silip sayfa3'e atacak.

inşallah anlatabilmişimdir.
 
Son düzenleme:
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sayfa2'ye aktarma için aşağıdaki kodu denermisiniz lütfen? Eğer tamamsa devam edelim ...

Kod:
Option Explicit
Sub bir()
Dim rg As Range
Dim sh1
Dim sh2
Dim sh1sonsat_ust, sh1sonsat_alt, sh2sonsat, kriter, i, j, x
Set sh1 = Sheets("Sayfa1")
Set sh2 = Sheets("Sayfa2")
sh1sonsat_ust = sh1.Cells(1, 1).End(xlDown).Row
sh1sonsat_alt = sh1.Cells(65536, 1).End(xlUp).Row
Set rg = Range("A1:A" & sh1sonsat_ust)
sh2.Columns("A:G").ClearContents
For i = 1 To 7
  sh2.Cells(1, i) = sh1.Cells(1, i)
Next i
sh2sonsat = sh2.Cells(65536, 1).End(xlUp).Row
For i = sh1sonsat_ust + 2 To sh1sonsat_alt
  kriter = sh1.Cells(i, 1)
  x = Application.WorksheetFunction.CountIf(rg, kriter)
  If x = 0 Then
     For j = 1 To 7
     sh2.Cells(sh2sonsat + 1, j) = sh1.Cells(i, j)
     Next j
     sh1.Rows(i).ClearContents
     sh2sonsat = sh2.Cells(65536, 1).End(xlUp).Row
  End If
Next i
End Sub
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Mükemmel olmuş eğer istersen devam edebiliriz.
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
mükerrer olanlarıda sayfa3'e atacak ve eğer mümkünse farklı renklere boyayacak (üsttekiler mavi alttakiler yeşil gibi)

İnşallah açıklayabilmişimdir
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Az önceki makroyu çalıştırdıktan sonra elimizde 3 tane liste var artık.

1. Sayfa1'deki üst liste
2. Sayfa1'deki alt liste (artık ayıklanmış durumda ve boş satırlarda içeriyor)
ve
3. Sayfa2'deki liste (makroyla aktardığımız)

Şimdi;Sayfa1'deki Üst Liste ve Alt Liste zaten aynı... Yani bu kayıtlara göre hepsi mükerrer.

Mükerrerlik hangi listeler arasında kontrol edilecek?
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Özür dilerim ben yanlış anlattım gerçekten özür dilerim.

Sayfa2'nin de altına başka bir liste (genel stok) yapıştıracağım yani aynı işlemi sayfa ikidede yapabilirmiyim.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aynı kodları kullanabilirsin. Tabi biraz değiştirerek .... Veri olmadığı için deneme fırsatım olmadı ama, 2.işlem için aşağıdaki gibi birşeyler olabilir.

Kod:
Sub iki()
Dim rg As Range
Dim sh2, sh3, sh2sonsat_ust, sh2sonsat_alt, sh3sonsat, kriter, i, j, x
Set sh2 = Sheets("Sayfa2")
Set sh3 = Sheets("Sayfa3")
sh2sonsat_ust = sh2.Cells(1, 1).End(xlDown).Row
sh2sonsat_alt = sh2.Cells(65536, 1).End(xlUp).Row
Set rg = sh2.Range("A1:A" & sh2sonsat_ust)
sh3.Columns("A:G").ClearContents
For i = 1 To 7
  sh3.Cells(1, i) = sh2.Cells(1, i)
Next i
sh3sonsat = sh3.Cells(65536, 1).End(xlUp).Row
For i = sh2sonsat_ust + 2 To sh2sonsat_alt
  kriter = sh2.Cells(i, 1)
  x = Application.WorksheetFunction.CountIf(rg, kriter)
  If x = 0 Then
     For j = 1 To 7
       sh3.Cells(sh3sonsat + 1, j) = sh2.Cells(i, j)
     Next j
'     sh1.Rows(i).ClearContents
     sh3sonsat = sh3.Cells(65536, 1).End(xlUp).Row
  End If
Next i
Set sh2 = Nothing
Set sh3 = Nothing
Set rg = Nothing
End Sub
 
Katılım
4 Temmuz 2007
Mesajlar
50
Excel Vers. ve Dili
Microsoft Office 2003 TR
Çok teşekkür ederim beni 6 saatten kurtardın.
 
Üst