• DİKKAT

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

Yanyana Sıralı Verilerden Mükerrer Bulmak

Katılım
4 Mart 2012
Mesajlar
69
Excel Vers. ve Dili
2007
Arkadaşlar Merhaba...Çok acil ve önemi var bu işin yardımlarınıza sığınıyorum...

BURDAN İNDİRİN!

Ekteki excel çizelgemde Sayfa3'te yer alan kısımda iki tablom var...Bu tablodaki "birleşim (A ve L)" sütunlarındaki değerleri karşılaştırıp aynı olanları bulmasını,bulduğu değerin sağdaki (L:S) verilerden ilgili adedi(S Sütunu) çekerek siyah taralı alandaki "excel adedi (I Sütunu)" kısmına yazdırmasını istiyorum.

Amacım iki farklı tablodaki kasa adetlerini karşılaştırabilmek...

Daha farklı bir yol,sayfa yada tablo kullanarak da yapabilirsiniz... Yeter ki gün içinde çözelim şu işi...
 
Anladığım kadarıyla A sütunundaki değeri L sütununda arayıp, varsa karşısındaki S sütunundaki değeri yazmasını istiyorsunuz. Bunun için aşağıdaki formülü kullanabilirsiniz:

Kod:
=DÜŞEYARA(A3;$L$3:$S$750;8;0)

Bu formülde A sütunundaki değer L sütununda yoksa #YOK hatası verecektir, bunu gidermek için eğer 2007 ve sonraki ofis versiyonlarından birini kullanıyorsanız aşağıdaki formülü kullanabilirsiniz:

Kod:
=EĞERHATA(DÜŞEYARA(A3;$L$3:$S$750;8;0);"")

2003 ve önceki versiyonlarda ise aşağıdaki formülü kullanabilirsiniz:

Kod:
=EĞER(EHATALIYSA(DÜŞEYARA(A3;$L$3:$S$750;8;0))=DOĞRU;"";DÜŞEYARA(A3;$L$3:$S$750;8;0))
 
bu sistemde sonuç alamıyorum. Aslında tek bi amacım var. aynı seleksiyon,yüzey türü,kalite,en-boy-kalınlık'a sahip ürünlerin kasa stok sayılarını karşılaştırmak... Bu sistemle ulaşamadım amacıma formül çalışıyor evet ama hatalı oranlar çekiyor. Lütfen yardımcı olun.
 
Öyleyse "şu satırda şu nedenden dolayı şu sonucu getirmesi gerekirken şu sonucu getiriyor" diye örnekleyin ki tam olarak hata nerdeymiş bulabilelim.
 
dosyayı indirdiniz mi biliyorum ama sonuç yanlış geliyor. Örneğin

AMON LIGHT*HONED*B*1.2*45.7*45.7 aratıyorken
AMON LIGHT*POLISHED*B*1.2*45.7*45.7'nin değerini alıp geliyor...

Sıkıntı burada...
 
L sütununda AMON LIGHT*HONED FILLED*B*1,2*45,7*45,7 ifadesini süzdüğümde sadece 3. satırdaki değer kalıyor ve bunun da S sütununda 7 yazıyor.

Verdiğim formülü I3 hücresine kopyalayıp aşağıya doğru kopyaladığımda I4 hücresinde yani A sütununda AMON LIGHT*HONED FILLED*B*1,2*45,7*45,7 ifadesinin olduğu satırda 7 sonucunu veriyor.

Eğer bu sonuç hatalıysa neden hatalı olduğunu anlamamız için bir önceki mesajımda belirttiğim gibi hangi satırda hangi sonucun çıkması gerektiğini nedeniyle birlikte belirtmeniz iyi olacaktır.
 
Ayrıca örnek dosyanızda L sütununda da A sütununda da

AMON LIGHT*HONED*B*1.2*45.7*45.7

ve

AMON LIGHT*POLISHED*B*1.2*45.7*45.7

satırları bulunmamaktadır.
 
Örnek verdim o değeri sadece afedersiniz.

ANTIQUE BLEND*TUMBLED*A*3*0*0 şunu kontrol edin mesela... Formülle çözemiyoruz sorunu.
 
İlk baktığımda ben de çözamedim hatanın nedenini. Daha sonra sorunun nedenini buldum. Siz hücreleri birleştirmek için yıldız (*) kullandığınız ve DÜŞEYARA formülünde * karakteri joker karakter olduğu için aranan ifadeye benzeyen her değeri dikkate alıyor. Listenizde de verdiğiniz örneği süzdüğümüzde 26. satırda da benzer bir değer bulduğu ve ilk değer de bu olduğu için sonucu yanlış getiriyor.

Sorunu çözmek için A3 hücresindeki formülü

Kod:
=BİRLEŞTİR(B3;"-";C3;"-";D3;"-";E3;"-";F3;"-";G3)

ve L3 hücresindeki formülü

Kod:
=BİRLEŞTİR(M3;"-";N3;"-";O3;"-";P3;"-";Q3;"-";R3)

olarak değiştirip aşağı doğru kopyalamanızı öneririm.
 
Teşekkür ederim sonuç olarak doğru çalışan bir formül fakat bu yöntem için pek de sağlıklı bir karşılaştırma yaptım diyemem. Peki bunu formülle değilde aynı ürünleri aynı satıra getirterek nasıl yapabiliriz ? Bir makro aracılığıyla bunu yapmak mümkün müdür? Çünkü burda bi stok sayımı söz konusu ve iki ayrı veritabanı var. Bunları kullanarak bir karşılaştırma yapıp hangisi falza hangisi eksik veya hangisi birbirinde yok bunları görebilmem gerekiyor...
 
Forumda liste karşılaştırma diye arama yaparsanız yakın zamanda sayın harziyan tarafından açılmış bir konu göreceksiniz. Belki işinize yarar. Farklı çözümler de vardır elbette, ancak evde bilgisayar yok, bakamıyorum.
 
Çok teşekkür ederim ilginizden dolayı.Benimle birlikte fikir yürütüp yol gösterdiğiniz için teşekkür ederim.. Sayın Korhan Ayhan hocam bakabilse bir de çok güzel olurdu aslında. Zira pek çok şeyi onun yazıları ile öğrendim bu siteden.
 
Bir makro oluşturdum. Makroyu çalıştırmadan önce dosyanıza Sayfa1 isimli bir sayfa eklemeniz gerekmektedir. Makro çalıştığında A:H arasını doğrudan yeni sayfaya kopyalıyor. Daha sonra L sütunundaki verileri satır satır A sütununda arıyor, eğer varsa L:S arasını yeni sayfada I:P arasına kopyalıyor. L sütunundaki veri A sütununda yoksa verilerin altındaki ilk boş satıra ekliyor. Son olarak sütun genişliğini ayarlayıp işlemi tamamlıyor. Son görünümde A sütunundaki veri L sütununda yoksa Sayfa1'de karşısı boş oluyor, L sütunundaki veri A sütununda yoksa yine karşısı boş kalıyor. Yalnız for next döngüsü olduğundan verilerinizin çokluğuna göre makronun çalışması uzun sürebilir:
Kod:
Sub kontrol()
Set s1 = Sheets("Sayfa1")
Set s2 = Sheets("Sayfa3")

son1 = s2.Cells(Rows.Count, "A").End(3).Row
son2 = s2.Cells(Rows.Count, "L").End(3).Row

s2.Range("A1:H" & son1).Copy s1.[A1]
s2.Range("L1:S2").Copy s1.[I1]

For i = 3 To son2
    For j = 3 To son1
        If s2.Cells(i, "L") = s1.Cells(j, "A") Then
            s2.Range(Cells(i, "L"), Cells(i, "S")).Copy s1.Cells(j, "I")
            j = son1
        Else
        yeni = WorksheetFunction.Max(son1 + 1, s1.Cells(Rows.Count, "I").End(3).Row + 1)
            s2.Range(Cells(i, "L"), Cells(i, "S")).Copy s1.Cells(yeni, "I")
        End If
    Next
Next
    s1.Select
    s1.Columns("A:P").EntireColumn.AutoFit
    MsgBox ("İşlem tamamlanmıştır")
End Sub
 
Geri
Üst