• DİKKAT

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

müşterilerin aldıkları mallar

Katılım
9 Ocak 2006
Mesajlar
313
Excel Vers. ve Dili
Excel 2007 türkçe
bir dosyam var 8000 satır müşteri isimler ve yan sutünlardan birine de aldıkları mallar girilmiş. bir kısmı

müşteri adı.. kodu ürün adı.
AYÞE DEMİRTAÞ 990324 MİMAR SİNAN 3'LÜ GÜVEÇ SADE SET
AYÞE DEMİRTAÞ 990408 ARZUM MODİCO SAÇ KURUTMA MKN.
AYNUR AK 990444 CEM TENCERE SETİ ÇAÐLA 9 PARÇA
AYTEN SÃ?NMEZSOY 990241 SERPA ELEKTRİKLİ BATTANİYE
İSMİ ALINMADI 323173 ORA VCD PLAYER

benim 2. dosyamda özel müşterilerimin ( 400 adet ) isimleri var. alta alta dizilmiş ve yanına telefonu yazılmış.

ben bu 8000 satır içinden benim özel müşterilerimin aldığı malları yanyana sıralamasını istiyorum


1 2 3 4 5 6 7
ahmet ora vcd b.şof mutfak rb. vs...
mehmet
ali
hüseyin

düşeyara formülü ile yapamadım.

yukarıdan da süz komutunu kullanacağım için bu bilgiler yanyana olmak zorunda. çünkü bir kampanyayı müşteriye haber verirken müşterinin daha önce o ürünü almadığını görmem gerekiyor.

yardımcı olursanız sevinirim.
 
Bir örnek dosya eklermisiniz.
 
İstediğinizi formüllerle yapmak mümkün fakat veri sayınızın çok fazla olması dosyanızı şişirecektir. Bu sebeple makro ideal bir çözüm. Ekte örnek bir dosya hazırladım. Birde progressbar ekledim. Sanırım uygulama olarak iyi bir örnek olacaktır. Kodlarında taranan veri çok fazla olmasına rağmen oldukça hızlı çalıştığını düşünüyorum.
 
çok güzel olmuş ancak satışların girildiği dosya ile isimlerini yazıdğım bazı müşterilerin dosyası farklı yerde idi. gerçek satış dosyasından kopyaladığım 1 sayfanın belli bir bölümü ve müşteri cep telefonlarını girdiğim dosyanın bir sayfasının belli bir bölümüydü. ben gercek özel müşterileri girdiğim dosyadan nasıl bu yaptığınız makroyu yapacağım. yani kendi sistemime nasıl oturtacağım?
 
Eğer gerçek dosyanızın satır ve sutun yerleri değişmiyorsa, tüm verilerinizi aynı şekilde yukarıda verdiğim dosyanın ilgili sayfalarına kopyalayın. Makro verilerinizin tamamını algılayacaktır.
 
Butona bastığınızda karşınıza sağa doğru hareket eden bir bar çıkıyor bu verilerinizin taranmasının ne durumda olduğunu gösteriyor, sadece görsel amaçlıdır.
 
MÜÞTERİLERİN TÜMÜNÜN GİRİLDİÃİ DOSYANIN YERİ C:\osman\satış & senet takibi.xls Ã?ZEL MÜÞTERİLERİN GİRİLDİÃİ DOSYA C:\CIGLTD\MÜÞTERİ CEP TELEFONLARI.XLS

İKİ DOSYAYI AYNI ANDA AÇIP LİSTELE TUÞUNA BASMAK İSTİYORUM. VE "MÜÞTERİ CEP TELEFONLARI" DOSYASINDA MÜÞTERİLERİN ALDIÐI MALLARIN LİSTELENMESİ K HÜCRESİNDEN BAÞLIYOR. O ÞEKİLDE AYARLAR MISINIZ?

BİR DE BUNUN NASIL YAPILDIÐINI BANA AÇIKLAR MISINIZ ?
 
K HÜCRESİNDEN BAÞLIYOR YAZMIÞIM DÜZELTİYORUM

K SÜTUNU 4. SATIRDAN BAÞLIYOR.
 
Bu iki dosyanızın birebir bir örneğini eklerseniz onun üzerinden gidelim.

Bunun nasıl yapıldığını anlamak için alt+F11 ile kodların yazıldığı VB editörüne ulaşabilirsiniz. Konuyu tam olarak öğrenmek içinde makro ve vba konuları üzerinde çalışmaya başlamanız gereklidir.
 
hep yaptığım makrolar makro kaydet tuşuna basıp yaptığım hareketlerle oluyordu. bunu pek ona benzetemediğim için sordum.

2 adet dosya göndereceğim ama 1. dosya "müşteri cep telefonları.xls" sığıyor ama tüm müşterilerin girildiği "satış & senet takibi.xls" dosyası sizin izin verdiğiniz aralıkların dışında.

tüm müşterilerin verildiği satış & senet takibi.xls dosyasının adresini versem yeterli olur mu ? hücre başlangıcı size göndermiş olduğum dosyanın "müşteri bilgi dosyası" sayfası ile aynı hücreden başlıyor.
 
Burada userform kullanıldığı için sizi yanıltmış olabilir, progressbarı kaldırırsak normal makro kaydet ile elde edilen yapıya çevirmek mümkün. Dosyalarınızda tüm verilerin bulunması gerekmez sadece 20-30 adet veri bulunması yeterlidir. Müşteri isimlerinide değiştirebilirsiniz. Gerçek dosyalar üzerinde çalışırsak, hata yapma ihtimalimiz ortadana kalkacaktır.
 
son olacak galiba bu dosya sistemine oturtursak iş biter.

size özel müşterilerin dosyasını gönderiyorum. bu dosyanın adresi C:\CIGLTD\MÜÞTERİ CEP TELEFONLARI.XLS k sutunundan itibaren listelemesi gerekiyor. listeleyeceği dosya C:\osman\satış & senet takibi.xls dosyası sayfa adı da "SATIÞ & SENET" sayfası size ilk gönderdiğim dosya ile aynı yerde müşterilerin aldığı mallar mevcut size o dosyayı da gönderiyorum ikisiyle bağlantılı o yaptığınız tuşla basmalı makrosunu yaparsanız sevirinim.

not: satış senet takibi dosyasına müşteri cep telefonları dosyasınının sayfasını eklemememin sebebi dosyayı çok yavaşlatmasıdır.
 
Ekteki dosyayı inceleyin. Diğer "SATIÞ & SENET TAKİBİ" isimli dosyayı açmanıza gerek yoktur. Sadece eklediğim dosyayı herhangi bir klasöre kopyalayıp kodu çalıştırmanız yeterlidir.
 
özür dilerim tamamıyla benim hatam.

sizi çok meşgul ettim ama ben yanlış kopyalamışım, C:\osman\satış & senet takibi.xls dosyasındaki (tüm müşterilerin bulunduğu dosya) da müşteri isimleri size gönderdiğim benim yanlış kopyaladığım dosyada gördüğünüz gibi B sütünundan değil orjinal dosyada C sütunundan başlıyormuş. o an çok müşterim geldiği için bunu fark edemedim. daha önceki metni 3 saat gibi bir zamanda zor yazmıştım. müşterim sürekli geldiği için. ondan dolayı kusura bakmayın. yazdığınız makroya baktım sütuna başvuru ile ilgili birşey göremediğimden kendim düzeltemedim. o şekilde düzeltilirse makro düzgün çalışacak.

şimdiden teşekkürler
müşteri isimleri ise benim yanlış kopyaladığım dosyada b2 den başlıyordu orjinal dosyada c4 den başlıyor. (aşağıya doğru.)
 
Kodu aşağıdaki gibi değiştirerek deneyin. Satılan mallarında E sütununda olduğu kabul edilmiştir. Eğer farklı bir sütunda ise kod içindeki kırmızı renkli harfi değiştirin.

[vb:1:9dfaa76283]Private Sub CommandButton1_Click()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Workbooks.Open Filename:="C:\SATIÞ & SENET TAKİBİ.xls", UpdateLinks:=0
Workbooks("SATIÞ & SENET TAKİBİ.xls").Activate
Sheets("SATIÞ & SENET").Copy before:=Workbooks("MÜÞTERİ CEP TELEFONLARI.xls").Sheets(1)
Workbooks("SATIÞ & SENET TAKİBİ.xls").Save
Workbooks("SATIÞ & SENET TAKİBİ.xls").Close
Workbooks("MÜÞTERİ CEP TELEFONLARI.xls").Activate
Set s1 = Sheets("sayfa1")
Set s2 = Sheets("SATIÞ & SENET")
s1.Select
s1.[k5:y65536].ClearContents
ProgressBar1.Min = 4
ProgressBar1.Max = s1.[f65536].End(3).Row
For a = 5 To s1.[f65536].End(3).Row
bul = 1
say = WorksheetFunction.CountIf(s2.[c4:c65536], s1.Cells(a, "f"))
If say > 0 Then
For b = 1 To say
adr = "c" & bul + 1 & ":c65536"
bul = WorksheetFunction.Match(s1.Cells(a, "f"), s2.Range(adr), 0) + bul
adr2 = "k" & a & ":y" & a
sut = WorksheetFunction.CountA(s1.Range(adr2)) + 11
s1.Cells(a, sut) = s2.Cells(bul, "e")
Next
End If
ProgressBar1 = a
Next
Columns("K:Y").EntireColumn.AutoFit
Sheets("SATIÞ & SENET").Delete
ActiveWindow.ScrollColumn = 6
Unload Me
End Sub
[/vb:1:9dfaa76283]
 
Geri
Üst