Iki listeyi birleştirme hakkında

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
114
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
Arkadaşlar öncelikle herkesin bayramı mübarek olsun.
Benim sorunum şu; elimde iki liste var biri fiyatlı diğeri ise barkodlu. şimdi bu iki listeyi birleştirmem gerekiyor yani barkodlunun yanına fiyatlarının eklenmesi lazım. şimdi hemen bu düşeyarayla yapılır diyeceksiniz biliyorum ama bir ufak problem var fiyatlı listede aynı koda birçok fiyat girilmiş . dolayısıyla barkodlu olan listeye fiyatlı listedeki en yüksek fiyatın yazılması gerekiyor. her iki listedede kodlar var ve bunlar aynı ama dediğim gibi fiyatlı listede aynı kodun birçok fiyatı var ve barkodlu listeye bu listedeki en yüksek fiyatı getirmem gerekiyor. bunu beceremedim. ya çok kısa bir yolu var ve benim kafam iyice durdu hatırlayamıyorum yada bilmiyorum. Yardımcı olursanız sevinirim. liste ekte.
Teşekkür ederim şimdiden, sağlıcakla kalın
 

Ekli dosyalar

Son düzenleme:

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Kod:
=MAK(EĞER(fiyat!$B$2:$B$5000=B2;fiyat!$F$2:$F$5000))
Dizi formülüdür. ctrl shift enter tuş kombinasyonu ile girişini tamamlayınız..

.
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
114
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
teşekkür ederim ;
yalnız anlayamadığım bişi var, aslında bu liste 18.000 satır ve ben kısa bir bölümünü yazdım burada. bu sizin formülü ilk sayfada mı yazacagım ve tüm listeye geçerli olması için aşağı kadar çekmelimiyim?
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
114
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
çok teşekkür ederim yaptım yanlış şeye bakıyormuyşum. tekrar teşekkürler.
 

archers70

Altın Üye
Katılım
19 Eylül 2009
Mesajlar
114
Excel Vers. ve Dili
office 365 ing
Altın Üyelik Bitiş Tarihi
23-08-2026
ömer bey formülü tüm listeye uyguladım hata verdi.
listeyi tekrar yükledim , hatta 65000 satırdan sonrasını almadı o da ayrı bir listede :)
bir bakarsanız nerde hata yapıyorum acaba??
ayrıca da excel 2003 kullanıyorum türkçe
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,318
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ömer beyin verdiği formül dizi formül olduğu için sizin veri yapınıza çok uygun değil. Sebebide sizin her iki sayfanızda da veri sayısı çok fazla. Bu sebeple uygulanan formülün hesaplama süresi çok uzun sürecektir. Bunun yerine isterseniz makrolu çözüm üretebiliriz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,318
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Aşağıdaki kodu denermisiniz. Benim sistemimde işlemin tamamlanması yaklaşık 25 Dakika sürüyor.

Kod:
Option Explicit
 
Sub EN_YÜKSEK_FİYATI_BUL()
    Dim S1 As Worksheet, S2 As Worksheet, S3 As Worksheet
    Dim X As Long, BUL As Range, ADRES As String, SATIR As Long
    Dim İLK_ZAMAN As Date, SON_ZAMAN As Date
 
    Set S1 = Sheets("barkod")
    Set S2 = Sheets("fiyat")
    Set S3 = Sheets("Sayfa3")
 
    İLK_ZAMAN = Time
 
    S1.Range("E:E").ClearContents
 
    For X = 3 To S1.Range("A65536").End(3).Row
        If WorksheetFunction.CountIf(S2.Range("B:B"), S1.Cells(X, 2)) > 0 Then
        
        S3.Columns("A:B").ClearContents
        SATIR = 1
 
        Set BUL = S2.Range("B:B").Find(S1.Cells(X, 2), LookAt:=xlWhole)
        If Not BUL Is Nothing Then
        ADRES = BUL.Address
        Do
        S3.Cells(SATIR, 1) = S1.Cells(X, 2)
        S3.Cells(SATIR, 2) = S2.Cells(BUL.Row, 6)
        SATIR = SATIR + 1
        Set BUL = S2.Range("B:B").FindNext(BUL)
        Loop While Not BUL Is Nothing And BUL.Address <> ADRES
        End If
 
        S1.Cells(X, 5) = WorksheetFunction.Max(S3.Range("B:B"))
        
        Else
        
        S1.Cells(X, 5) = 0
        
        End If
    Next
 
    SON_ZAMAN = Time
 
    S3.Columns("A:B").ClearContents
 
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    Set S3 = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır." & vbCrLf & vbCrLf & "İşlem süresi ;  " & Format((SON_ZAMAN - İLK_ZAMAN), "hh:mm:ss")
End Sub
 
Üst