3 tane workbookum var
a, b ve c
hepsi aynı şablon üzerine kurulmuş haldeler.
a ve b dosyalarında data var.
amacım a'nın j sütunundaki satırları sıradan b'nin j sütunundakilerle vlookup gibi bir fonksiyon ile eşleşme olup olmadığına bakarak eşleşenleri boş şablonlu dosya olan C workbookunda j sütunundaki yerine yerleştirmek.
düşünce olarak aslında basit bir vlookup. binlerce satır olduğundan dolayı raporlar yani data sürekli olarak yeni yeni dosyalarla geldiğinden dolayı makrolaştırmak istiyorum ki tek tuşla güncellemeler hallolsun falan filan diye.
stackoverflow linkleri olsun ya da nasıl yapabileceğime dair bilgiler olsun her şeye müteşekkir olurum.
sevgiler excel guruları.
Bilmen gerekenler
1) Döngüler (özellikle for each)
2) Data olan son satırı ve sütunu bulma
3) Başka bir sheet, workbook'tan veri çekme, satır, sütun iterasyonu
gerisi algoritma bilgine kalıyor.
Şimdi önemli soru şu:
A sayfasında J1 hücresindeki veri, B sayfasında J5 hücresindeyse, yani satır sayıları farklıysa, bu bir eşleşme midir?
Eğer değilse, yani A'da da B'de de aynı satırda olması gerekiyorsa, C'de de aynı satır numarasına mı yazılmalıdır, yoksa sırayla aşağı doğru yazılmalı mıdır?
Eğer A sayfasında J1 hücresindeki veri, B sayfasında J5 hücresindeyken bu bir eşleşme kabul ediliyorsa makro şu olmalı:
Sub Macro1()
Dim i, j, k As Integer
k = 1
For i = 1 To 315 ' A sayfasındaki toplam satır sayısı
For j = 1 To 85 ' B sayfasındaki toplam satır sayısı
If Sheets("A").Cells(i, 10) = Sheets("B").Cells(j, 10) Then
Sheets("C").Cells(k, 10) = Sheets("A").Cells(i, 10)
k = k + 1
End If
Next j
Next i
End Sub
bütün j sütununda nerede olursa olsun herhangi bir eşleşme olduğu takdirde sıradaki boş satıra yazılmasını istiyorum.
j1'de b001 var diyelim j23'te de b001 var. bulduğu takdirde loop bitiyor. j2'deki değeri j sütunun tamamında sıradan kontrole başlıyor. bulduğu takdirde sıradaki boş satıra yazıyor. bulamadığı takdirde ise loop baştan başlıyor.
Üstteki yazdığım makroyu buna uygun. Bi dene istersen. Hata vs. alırsan konuşalım.
@himmet dayi'nın kodu anca ufak bir referans olabilir, alıp kullanabileceğin bir kod değil.
1) dinamik olarak data olan satır, sütunları bulmuyor, manuel yazman lazım. Bu da yapmak istediğin otomatikleştirme işlemine ters.
2) örnek data olmadığı için varsayımsal bir eşleştirme yapılıyor, konumların doğruluğu için tek bir veri değil, ardışık hücre eşitlikleri kontrol edilip A dosyasında olmayan ama B dosyasında olan verilerin başladığı yer net olarak bulunmalı. Bu sayede dosyalarda adam atıyorum 3. satır yerine 5. satırda başlarsa yanlış eşleşmeler yapılmamasını sağlarsın.
3) Soruyu yanlış anlamış başka bir dosyaya değil, aynı dosyada başka bir sheet'e yazıyor.
4) Dosyalar açık mı kontrol edilmemiş.
5) Excel'de dikkat etmezsen ve yanlış kodlama yaparsan arada boş satırlar varsa burayı data olan son satır gibi algılayıp komple hatalı sonuç alırsın.
sonuç olarak güncelleme yapma gereği duydum:
himmetdayı'nın kodunu kullanabiliyordum ve üzerine biraz daha iyileştirmek için oturdum başında. bi süre düşüncelerde boğulduktan sonra yaklaşık 20bin satır datayı 2-3 saniye içerisinde çeken bir koda evrilmiş bir olay ortaya çıktı.