• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Birleştirme için kod

Katılım
2 Ekim 2013
Mesajlar
347
Excel Vers. ve Dili
ofis 2019 türkçe
windows 10 pro türkçe
Arkadaşlar Örnek dosyanın Mevcut sayfasında da görüleceği gibi üç sütundan oluşan bir tablom var. Bu tablo yaklaşık 250.000 satır.
A sütununda aynı numaralara sahip oyuncuların
İSTENEN sayfasında
bir satırda
B sütunundaki veri;C Sütunundakiveri@ formatında birleşmesini istiyorum.
Örneğin id 1 için
Suavi Tedü;İzzet@Gülistan Güzey;Bety@Samiye Hün;Samiye@Hadi Hün;Binbaşı Celal@Esen Görkmen;Emel@Reşit Gürzap;Miralay@Refik Kemal Arduman;General Thomson@İbrahim Delideniz;Binbaşı Nuri@Neşet Berküren;Ali@Kemal Edige;Yüzbaşı Henry@Ferhan Tanseli;Yüzbaşı Ferit@Şükran Güngör;Dahiliye Nazırı@Zeki Alpan;Selahattin@Sadri Alışık;Mülazım Tafti@Perihan Altındağ Sözeri;Perihan@Osman Türkoğlu;Milli Kuvaiyeci@Atıf Avcı;@Müfit Kiper;@Refet Gülerman;@Turhan Göker;@Mümtaz Alpaslan;@İlhan Hemşeri;

DİKKAT
---IDler sıralı olmayabilir. Yani tablonun sonuna 1 nolu idli bir oyuncu ve karakter girişi yapılırsa bu 1 nolu oyuncuların olduğu satıra gitmeli
---Bu listeden bir satır silindiğinde ilgili birleştirme makro çalıştığında güncellemeli ve oradan da silinmeli
--- Birleştirme sırası yukarıdan aşağı doğru olmalı. yani ilk yazılan en önde son yazılan en sonda olmalı

Örneğin 1 nolu birleştirmede Suavi Tedü satırın en başında İlhan Hemşeri satırın en sonunda olmalı

KISACA
İstenen sayfasındaki formatı ben manuel yaptım, onu otomatik yapacak kod istiyorum

ÖRNEK DOSYA
http://s9.dosya.tc/server/ddcspu/birlestirme.xlsx.html
 
Merhaba sayın meleklerim ; ben dosyanız üzerinde formül uygulayarak D2 hücresinden itibaren
Kod:
=BİRLEŞTİR(B2;";";C2;"@")
alta kadar bu formülü çektim ve her biri istediğimiz hali aldı. Sizin istediğiniz Vlookup ile yapılabilir üstadlar bakar elbet.Birleştirme mevzusuna gelince isterseniz şöyle yapabilirsiniz.A sütununa filtre verip sadece 1 no lu kişileri seçip verileri yerinde filtreler ve hemen ardına
Kod:
Sub Birlestir()
Dim i As Long
 
Range("Z2").ClearContents
 
For i = 1 To Cells(Rows.Count, "D").End(xlUp).Row
    Range("Z2") = Range("Z2") & Cells(i, "D")
Next i
 
End Sub
" Kod D sütununda istediğimiz şekle gelmiş halde bulunan ayrı oyuncu isimlerini Z2 hücresine birleştirerek yazıyor."

Elimden bu geldi :)


Sayın muygun ; kusura bakmayın ben yazarken cevap yollamışsınız görmedim.
 
Sayın muygun ; ID numaralarına göre nasıl geliyor bu kodlarda kodları açıklayarak yazma şansınız olur mu rica etsem ? Bende uğraştım ama bir türlü beceremedim :) Bende öğrenmiş olayım hazıra konmakla yürümez bu tekke :)
 
Syn. TEGCreative;
Farklı çözümler buranın zenginliğidir ve herkesi zenginleştirir.
Bu konuda rahat olun.
İyi çalışmalar.
 
Merhaba;
Kodları incelerseniz ilk 10 satır İstenen sayfasının temizlenmesi ve benzersiz verilerin (ID No'larının) İstenen sayfasına yazma işlemini yapıyor.

İkinci bölümde ise ;
satno = WorksheetFunction.Match(Range("a" & i).Value, s2.Range("A1:A" & i), 0)
ile Mevcut sayfasındaki ID no'sunun İstenen sayfasındaki satır no'su bulunuyor.

Daha sonra aynı döngü içerisinde ilgili ID nosunun karşılığında veri varsa;
s2.Cells(satno, 2) & "@" & s1.Cells(i, 2) & ";" & s1.Cells(i, 3)
ile ;
veri yoksa (yani ilk veri yazılıyorsa);
s2.Cells(satno, 2) & s1.Cells(i, 2) & ";" & s1.Cells(i, 3)
ile mevcut veri ile bulunan veri birleştiriliyor.

Bu makroda belki çok uygulamada karşılaşmadığınız bir satır var. (bunu uygulamalarınızda kullanırsanız makrolarınız daha hızlı olacaktır)
satno = WorksheetFunction.Match(Range("a" & i).Value, s2.Range("A1:A" & i), 0)
Bunun anlamı;
A sütununda i döngüsü ile aradığımız veri diğer sayfanın kaçıncı satırında
Bununla iç içe iki döngü kurmadan direkt satırnosunu öğrenebiliriz. (tabi diğer sayfadaki ID no'larının mükerrersiz olduğunu varsayarak)

İyi çalışmalar.
 
Son düzenleme:
Merhaba;
Kodları incelerseniz ilk 10 satır İstenen sayfasının temizlenmesi ve benzersiz verilerin (ID No'larının) İstenen sayfasına yazma işlemini yapıyor.

İkinci bölümde ise ;
satno = WorksheetFunction.Match(Range("a" & i).Value, s2.Range("A1:A" & i), 0)
ile Mevcut sayfasındaki ID no'sunun İstenen sayfasındaki satır no'su bulunuyor.

Daha sonra aynı döngü içerisinde ilgili ID nosunun karşılığında veri varsa;
s2.Cells(satno, 2) & "@" & s1.Cells(i, 2) & ";" & s1.Cells(i, 3)
ile ;
veri yoksa (yani ilk veri yazılıyorsa);
s2.Cells(satno, 2) & s1.Cells(i, 2) & ";" & s1.Cells(i, 3)
ile mevcut veri ile bulunan veri birleştiriliyor.

Açıklamanız için çok teşekkür ederim sayın muygun ; sağlıcakla kalın. İyi çalışmalar .
 
Merhaba sayın meleklerim ; ben dosyanız üzerinde formül uygulayarak D2 hücresinden itibaren
Kod:
=BİRLEŞTİR(B2;";";C2;"@")
alta kadar bu formülü çektim ve her biri istediğimiz hali aldı. Sizin istediğiniz Vlookup ile yapılabilir üstadlar bakar elbet.Birleştirme mevzusuna gelince isterseniz şöyle yapabilirsiniz.A sütununa filtre verip sadece 1 no lu kişileri seçip verileri yerinde filtreler ve hemen ardına
Kod:
Sub Birlestir()
Dim i As Long
 
Range("Z2").ClearContents
 
For i = 1 To Cells(Rows.Count, "D").End(xlUp).Row
    Range("Z2") = Range("Z2") & Cells(i, "D")
Next i
 
End Sub


" Kod D sütununda istediğimiz şekle gelmiş halde bulunan ayrı oyuncu isimlerini Z2 hücresine birleştirerek yazıyor."

Elimden bu geldi :)


Sayın muygun ; kusura bakmayın ben yazarken cevap yollamışsınız görmedim.

ilgilendiğiniz çin çok teşekkürler TEGCreative kardeşim.
Muygun Beyin kodları isteğimi daha çok karşılıyor.
selamlar
 
Geri
Üst