• DİKKAT

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

Veri Birleştirme Hakkında

Katılım
14 Aralık 2005
Mesajlar
29
Excel Vers. ve Dili
EXCEL 2010 ENG
Merhabalar,

2 farklı excel sayfasında verilerim var. Bu verilerden database mantığında bir data oluşturmak istiyorum.

Örnek olarak bir sayfada Musteri bilgileri, digger sayfada da Ürün bilgileri mevcut.

İstediğim DB sayfasında bu bilgilerin birleştirilmesidir.

Ekte 2 şer sürunluk örnek verilerle bir dosya oluşturdum. Bu dosyalarda sütundaki veriler artabileceğinden buna uygun bir yapı oluşturulabilirse sevinirim. (Müşteri şehri, kategorisi, vb bilgiler müşterinin sütunlarına, Ürün kategorisi, gramı vb bilgilerde ürün sütunlarına gelebilir)

Yardımlarınız için teşekkürler.

MAGAZA KODU MAGAZA ADI
1 A
2 B
3 C
4 D
5 E


URUN KODU URUN ADI
11 AA
22 BB
33 CC
44 DD
55 EE


MAGAZA KODU MAGAZA ADI URUN KODU URUN ADI
1 A 11 AA
1 A 22 BB
1 A 33 CC
1 A 44 DD
1 A 55 EE
2 B 11 AA
2 B 22 BB
2 B 33 CC
2 B 44 DD
2 B 55 EE
3 C 11 AA
3 C 22 BB
3 C 33 CC
3 C 44 DD
3 C 55 EE
4 D 11 AA
4 D 22 BB
4 D 33 CC
4 D 44 DD
4 D 55 EE
5 E 11 AA
5 E 22 BB
5 E 33 CC
5 E 44 DD
5 E 55 EE
 

Ekli dosyalar

tüm mağazalarda, tüm ürünler mi olacak ? verdiğiniz örnekten bu çıkıyor ortaya, doğru mudur ?

mağaza 2 kolon ile sınırlı kalacak ve ürün sayfası mı daha fazla kolon olabilecek ?
 
2 Tabloda nXn şeklinde olacak. yani Müşteri tablosuna da ekstra alan ekleyebileceğim, ürün tablosuna da.
 
kusura bakmayın, vaktim kalmadı yapacak, bir süre de burada olmayacağım.

nasıl derseniz yapmanız gereken kısaca

1.sayfadaki satır sayısını bulun
2. sayfadaki satır sayısını bulun

üçüncü sayfaya, 1 sayfanın satırlarını, 2.sayfadaki satır sayısı kere kopyalayın.
daha sonra 2. sayfanın verilerini aynı mantık ile üçüncü sayfaya kopyalayın.
ikinci sayfayı kopyalarken range ile sadece ilgili hücreleri kopyalayın
üçüncü sayfaya yapıştırırken son dolu kolonu bulup, +birinci kolona yapıştırın
bunu yaparken yine 2.sayfanın satır sayısı kadar döngü ile yapmalısınız

işin mantığı kısaca bu , 4 gün kadar uzaklarda olacağım, fırsat bulabilirsem dosya olarak da yardımcı olmaya çalışırım ama zor gibi görünüyor

umarım siz yaparsınız veyahut bir yapan çıkar...
 
kopyala yapıştır yerine daha hızlı çalışan dizi'leri kullandım...

Kod:
Sub iki_tablodan_bir_tablo()

Dim i As Long, j As Long, k As Long, r As Long, c As Long
Dim aMust, aUrun, aMustUrun

aMust = Worksheets("MUSTERI").Range("A1").CurrentRegion
aUrun = Worksheets("URUN").Range("A1").CurrentRegion

r = (UBound(aMust, 1) - 1) * (UBound(aUrun, 1) - 1) + 1
'-1'ler ve +1 2 tablodaki başlık satırını 1e indirmek için kullanılmıştır.
c = UBound(aMust, 2) * UBound(aUrun, 2)

ReDim aMustUrun(1 To r, 1 To c)

'2 başlık satırının yana yana tek başlık satırı olması
aMustUrun(1, 1) = aMust(1, 1)
aMustUrun(1, 2) = aMust(1, 2)
aMustUrun(1, 3) = aUrun(1, 1)
aMustUrun(1, 4) = aUrun(1, 2)

'başlık satırları dışındaki verilerin eklenmesi
k = 2
For i = 2 To UBound(aMust, 1)
    For j = 2 To UBound(aUrun, 1)
        aMustUrun(k, 1) = aMust(i, 1)
        aMustUrun(k, 2) = aMust(i, 2)
        aMustUrun(k, 3) = aUrun(j, 1)
        aMustUrun(k, 4) = aUrun(j, 2)
        k = k + 1
    Next j
Next i

'eski verilerin silinmsi:
Worksheets("DB").Cells.Clear 

'birleşe tek tablonun sayfaya yazdırılması.
Worksheets("DB").Range("A1").Resize(r, c).Value = aMustUrun

End Sub
 
Son düzenleme:
@mancubus, emeğiniz için çok teşekkür ederim. 2x2 lik matrisim için çok güzel oldu. Bunu nxn'e dönüştürebilir miyiz peki?

Yani müşteri tabloma sütun eklediğimde ya da Ürün tabloma Sütun eklediğimde onları da digger tabloda gösterebilir miyiz?
 
Kod:
Sub iki_tablodan_bir_tablo_v2()

Dim i As Long, j As Long, k As Long, m As Long, r As Long, c As Long
Dim aMust, aUrun, aMustUrun

aMust = Worksheets("MUSTERI").Range("A1").CurrentRegion
aUrun = Worksheets("URUN").Range("A1").CurrentRegion

r = (UBound(aMust, 1) - 1) * (UBound(aUrun, 1) - 1) + 1
c = UBound(aMust, 2) * UBound(aUrun, 2)

ReDim aMustUrun(1 To r, 1 To c)

For m = 1 To UBound(aMust, 2)
    aMustUrun(1, m) = aMust(1, m)
Next m
For m = 1 To UBound(aUrun, 2)
    aMustUrun(1, m + UBound(aMust, 2)) = aUrun(1, m)
Next m

k = 2
For i = 2 To UBound(aMust, 1)
    For j = 2 To UBound(aUrun, 1)
        For m = 1 To UBound(aMust, 2)
            aMustUrun(k, m) = aMust(i, m)
        Next m
        For m = 1 To UBound(aUrun, 2)
            aMustUrun(k, m + UBound(aMust, 2)) = aUrun(j, m)
        Next m
        k = k + 1
    Next j
Next i

Worksheets("DB").Cells.Clear 'eski verileri sil
Worksheets("DB").Range("A1").Resize(r, c).Value = aMustUrun

End Sub
 
@mancubus, @doganbaris ilginiz için çok teşekkürler.

@mancubus tarafından sorum macro ile yazıldı ve çözüldü.

Emeği geçen herkesin ellerine sağlık.

İyi günler.
 
rica ederim. işe yaradığına sevindim...
 
Geri
Üst