[]

excel gurularına selamlar olsun vba sorularım var

bayağı paslanmışım buna benzer şeyler yapmıştım ama şu an hiç hatırlamıyorum o yüzden yardıma ihtiyacım var:

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.
  • kimlanbu  (30.07.19 12:51:38) 
Ş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?
  • himmet dayi  (30.07.19 13:28:42) 
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
  • himmet dayi  (30.07.19 13:37:31 ~ 13:38:04) 
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.
  • viyana kangurusu  (30.07.19 13:43:03) 
Üstteki yazdığım makroyu buna uygun. Bi dene istersen. Hata vs. alırsan konuşalım.


  • himmet dayi  (30.07.19 13:53:48) 
@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.
  • kimlanbu  (30.07.19 15:56:53 ~ 15:58:36) 
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ı.
  • viyana kangurusu  (31.07.19 10:36:20) 
1
buraya yazılanların hakları Sir Anthony Hopkins'e aittir.
yazan eden compumaster, ilgilenen eden fader
modere edenler angelus, Artibir, aychovsky, baba jo, basond, compumaster, deckard, duyulmasi gerektigi kadar, fader, fraise, groove salad, kahvegibi, kaymaktutmayansicaksut, kibritsuyu, monstro, pandispanya, robin, ron dennis
bu sitede yazılanların hiçbiri doğru değildir. site içeriği küçükler için sakıncalı olabilir. yazılardan yazarları sorumludur. kaynak göstermeden alıntılanamaz. devlet tarafından atanmış bir kurumun internet üzerinde kimin hangi bilgiye ulaşıp ulaşamayacağına karar vermesi insan haklarına aykırıdır. web siteleri kullanıcıların istekleri doğrultusunda bağlandıkları yerlerdir. kullanıcılar isterlerse bir web sitesine bağlanmayabilirler. bu güçleri ve imkanları mevcuttur. bir kullanıcı bir siteye bağlanmak istiyorsa bu onun tercihi ve hakkıdır. bağlanmak istemiyorsa bu yine onun tercihi ve hakkıdır. halkın kendisine hizmet etmesi için görevlendirdiği kurumlar hadlerini aşıp halka neye ulaşıp ulaşmayacağını bilmeyen cahil cühela muamelesi edemezler. ebeveynlerin çocuklarını sakıncalı içeriklerden koruması için çok sayıda bedava ve ücretli yazılım mevcuttur. bu yazılımlar bir web tarayıcısını kullanmaktan daha karmaşık teknik bilgi gerektirmemektedir. devletin milletini küçük düşürmesi ve ebleh yerine koyması yasaktır. Skimlinks ile linkler üzerinden yönlendirme payı alınmaktadır.