Excel Forum


Geri Git   Excel Forum > EXCEL-Soruları > Excel'e Yeni Başlayanlar
Atatürk
Şifremi Unuttum

DUYURU SİSTEMİ

Excel'e Yeni Başlayanlar Excel kullanmaya yeni başladıysanız sorularınızı buraya gönderebilirsiniz.
Dosya ekleyebilirsiniz

Özel Arama



Yanıtla
 
Paylaş Konu Araçları Görünüm Modları
Eski 30-07-2010, 22:35   #1
turan1971
 
Giriş: 28/12/2005
Mesaj: 92
Varsayılan Komplike süzme nasıl yapılır

Merhaba, iyi geceler arkadaşlar...
65bin kayıttan oluşan bir tablom var. 3 başlığım var.
Müşteri No
Şube Kodu
Bakiye

Bir müşteri bazen 1 kere bazen 5-6 kere tabloda alt alta olabiliyor. Aynı müşteri hem a şubeden hem b şubeden alışveriş yapmış olabiliyor. Bazı şubede borcu bitmişken bazı şubede hala borcu olabiliyor. Bu kısa açıklamadan sonra sorum şu.

Birden fazla şubede borcu olan müşterilerin süzülmesi yada ayrı bir sayfaya kayıt edilmesini nasıl yaparım. Sonuç çıktısı olarak bana şöyle birşey lazım.
A müşteri 2 tane şubede toplam 1000 TL borcu vardır.
B müşteri 4 tane şubede toplam 300 TL borcu vardır.
Tabi bu tablo şeklinde olacak...
Örnek dosyada sağ tarafta bulunan sonuç tablosudur. Olmasını istediğim tablodur.
Bunu nasıl yapabilirim...
Bir fikri olan varmı?
Eklenmiş Dosyalar
Dosya Türü: xls Kitap.xls (24.5 KB, 30 Görüntülenme)

Bu mesaj en son " 30-07-2010 " tarihinde saat 22:36 itibariyle turan1971 tarafından düzenlenmiştir.... Neden: imla hatası
turan1971 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 31-07-2010, 01:09   #2
Ergün Güler
 
Ergün Güler kullanıcısının avatarı
 
Giriş: 05/01/2009
Şehir: İstanbul
Mesaj: 1,589
Excel Vers. ve Dili:
2003 Türkçe
Varsayılan

Selam,
Dosyanız ektedir. İnceler misiniz?
İyi çalışmalar.
Eklenmiş Dosyalar
Dosya Türü: rar ergun_turan1971.rar (7.4 KB, 53 Görüntülenme)
Ergün Güler Çevrimdışı   Alıntı Yaparak Cevapla
Eski 31-07-2010, 08:18   #3
turan1971
 
Giriş: 28/12/2005
Mesaj: 92
Varsayılan

Merhaba Ergun Bey,
Ellerinize sağlık. Yalnız bir pürüz var. Mesela Farklı şube sayısında toplanacak şube şöyle olmalı. Borç bakiyesi bulunan farklı şubeler sayılmalı.
Örneğimizde 345 nolu müşteri sadece 22 şubede borcu kaldığı için sonuç 1 olmalı.
400 nolu müşteridede 1 olmalı.
600 nolu müşteride 2 olmalı.
655 nolu müşteridede 2 olmalı.
.
Yani bakiyesi sıfır olan farklı şubeler sayılmamalı.
Bu mümkünmü?
turan1971 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 31-07-2010, 10:31   #4
Korhan Ayhan
Moderatör
 
Korhan Ayhan kullanıcısının avatarı
 
Giriş: 15/03/2005
Şehir: ANTALYA
Mesaj: 18,641
Excel Vers. ve Dili:
OFFICE 2003 PRO TR OFFICE 2013 PRO TR
Varsayılan

Selamlar,

Benzersiz "Müşteri No" için E2 hücresine aşağıdaki formülü uygulayın. Hücreye formül girişini CTRL+SHIFT+ENTER tuşlarına basarak tamamlayın.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
=EĞER(SATIRSAY($A$2:A2)<=TOPLA(EĞER(SIKLIK(EĞER($A$2:$A$1000<>"";KAÇINCI("~"&$A$2:$A$1000;$A$2:$A$1000&"";0));SATIR($A$2:$A$1000)-SATIR(A2)+1);1));İNDİS($A$2:$A$1000;KÜÇÜK(EĞER(SIKLIK(EĞER($A$2:$A$1000<>"";KAÇINCI("~"&$A$2:$A$1000;$A$2:$A$1000&"";0));SATIR($A$2:$A$1000)-SATIR($A$2)+1);SATIR($A$2:$A$1000)-SATIR($A$2)+1);SATIRSAY($A$2:A2)));"")

Borcu olan "Farklı Şube" sayısı için F2 hücresine aşağıdaki formülü uygulayın. Hücreye formül girişini CTRL+SHIFT+ENTER tuşlarına basarak tamamlayın.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
=EĞER(E2="";"";TOPLA(EĞER(SIKLIK(EĞER($A$2:$A$1000<>"";EĞER(($A$2:$A$1000=$E2)*($C$2:$C$1000<>0);KAÇINCI("~"&$B$2:$B$1000;$B$2:$B$1000&"";0)));SATIR($A$2:$A$1000)-SATIR($A$2)+1);1)))

"Toplam Bakiye" tutarı için G2 hücresine aşağıdaki formülü uygulayın.

Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
=EĞER(E2="";"";ETOPLA(A:A;E2;C:C))
Bu formülleri alt hücrelerede sürükleyerek uygulayın.
Eklenmiş Dosyalar
Dosya Türü: xls ÖRNEK.xls (28.5 KB, 52 Görüntülenme)
__________________
.
.
.

Soru sormadan önce forumumuzun aşağıdaki
bölümlerini incelediğinizde birçok sorunuza yanıt bulabilirsiniz.


Excel Dersanesi
Uygulamalı Excel Eğitimi
Excel İçin Örnek Uygulamalar
Video Dersane (***Altın Üyelere Özel***)

Lütfen sorularınızın çözümlendiğine dair geri dönüş mesajı yazınız...!
Lütfen yazım ve forum kurallarına uyalım...!
Lütfen sorularımızı açık ve net bir dille ifade edelim...!



FORUM KURALLARI
Korhan Ayhan Çevrimdışı   Alıntı Yaparak Cevapla
Eski 01-08-2010, 10:53   #5
turan1971
 
Giriş: 28/12/2005
Mesaj: 92
Varsayılan

ebet tam anlamıyla formül işe yaradı. ellerinize sağlık.
Ama maalsef AMA'sı var.
Tablomda 65533 satır veri var. Ben formüllerinizdeki satır sayısını buna göre düzelttim. Ama işlemcinin gücü yeterli gelmedi. Bende dosyamı farklı kaydedip, bakiyesi sıfır olanları zor bela süzüp sildim. Geriye 8100 kayıt kaldı. Bir hücreye formülünüzü girdiğimde 8binyüz satırlık alanı yaklaşık 15-20 saniyede hesaplayabiliyor. Bende laptoptan evdeki bilgisayarıma aktardım. 4 çekirdekli Q9300'de bile 30 satırlık alan yani 60 adet hücre demek yaklaşık 4-5 dakikada hesaplıyor. yaklaşık 3000 satır hesaplattırmam gerekirse 40 ile 50 saat alacak gibi.
turan1971 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 01-08-2010, 11:03   #6
turan1971
 
Giriş: 28/12/2005
Mesaj: 92
Varsayılan

Şöyle bir fikir geldi aklıma, biliyorumki bir müşteri 10'dan fazla farklı şubede borcu yoktur. Dolayısıyla A hücresini A2'den A8100'e kadar taramaya gerek yok. Listem müşteri numarasına göre dizildiğine göre 10'dan fazla yerde yer almıyordur. mesela A56'cı hücrede A56'dan A66'ya kadar kontrol etse tamamdır. Bu fikirden yola çıkarak formül çok hızlanabilir, ama formülü bu fikre göre değiştiremedim. Formül benim için çok komplike.
turan1971 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 01-08-2010, 11:21   #7
1Al2Ver
Altın Üye
 
1Al2Ver kullanıcısının avatarı
 
Giriş: 05/11/2007
Şehir: İstanbul / Maltepe
Mesaj: 2,959
Excel Vers. ve Dili:
2010 Tr
Varsayılan

Merhaba,

E2 ve F2'deki formüllerdeki 1000 olan yerleri 66 olarak,

G2'yi ; =EĞER(E2="";"";ETOPLA(A2:A66;E2;C2:C66)) olarak değiştirip dener misiniz ?
__________________
Esen Kalın...
1Al2Ver Çevrimdışı   Alıntı Yaparak Cevapla
Eski 01-08-2010, 12:13   #8
Orion1
Uzman
 
Orion1 kullanıcısının avatarı
 
Giriş: 01/03/2005
Mesaj: 17,075
Excel Vers. ve Dili:
Win7 Home Basic TR 64 Bit Ofis-2010-TR 32 Bit
Varsayılan

Alternatif dosyayı dneyiniz.VBA kod ile yapıldı.
Kod: (Rahat kopyalayabilmeniz için tüm kodu seçmenizi sağlar)
Sub sube_59()
Dim a, z As Object, myarr1(), myarr2(), n As Long
Dim sat As Long, i As Long, deg As String, ilk As Date
Sheets("Sayfa1").Select
Range("E2:G65536").Clear
sat = Cells(65536, "A").End(xlUp).Row
If sat < 2 Then Exit Sub
ilk = Now
Set z = CreateObject("Scripting.Dictionary")
a = Range("A2:C" & sat).Value
ReDim myarr1(1 To 3, 1 To UBound(a, 1))
For i = 1 To UBound(a, 1)
    deg = a(i, 1) & "-" & a(i, 2)
    If Not z.exists(deg) Then
        n = n + 1
        z.Add deg, n
        myarr1(1, n) = a(i, 1)
        myarr1(2, n) = a(i, 2)
    End If
    myarr1(3, z.Item(deg)) = myarr1(3, z.Item(deg)) + a(i, 3)
Next i
ReDim Preserve myarr1(1 To 3, 1 To n)
Erase a
Set z = Nothing
Set z = CreateObject("scripting.Dictionary")
n = 0
ReDim myarr2(1 To 3, 1 To UBound(myarr1, 2))
For i = 1 To UBound(myarr1, 2)
    If Not z.exists(myarr1(1, i)) Then
        n = n + 1
        z.Add myarr1(1, i), n
        myarr2(1, n) = myarr1(1, i)
    End If
    myarr2(2, z.Item(myarr1(1, i))) = myarr2(2, z.Item(myarr1(1, i))) + 1
    myarr2(3, z.Item(myarr1(1, i))) = myarr2(3, z.Item(myarr1(1, i))) + _
    myarr1(3, i)
Next i
Erase myarr1
Set z = Nothing
ReDim Preserve myarr2(1 To 3, 1 To n)
Application.ScreenUpdating = False
Range("E2").Resize(n, 3) = Application.Transpose(myarr2)
Application.ScreenUpdating = True
Erase myarr2
Set z = Nothing
MsgBox "İşlem tamamlandı" & vbLf & "Süre : " & Format(Now - ilk, "hh:mm:ss") & vbLf & _
"evrengizlen@hotmail.com", vbOKOnly + vbInformation, "E V R E N"
End Sub
Eklenmiş Dosyalar
Dosya Türü: rar Kitap_59.rar (12.8 KB, 26 Görüntülenme)
__________________
KOD ANLATILMAZ,YAZILIR!
Bir sümer atasözü;
Madem biliyorsun neden öğretmiyorsun.Boşa vakit geçirdin neye yaradı.
Orion1 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 05-08-2010, 13:25   #9
turan1971
 
Giriş: 28/12/2005
Mesaj: 92
Varsayılan

herkese çok çok teşekkür ederim. makro en iyisi ve en hızlısıymış demek...
turan1971 Çevrimdışı   Alıntı Yaparak Cevapla
Eski 05-08-2010, 15:13   #10
Ali
 
Ali kullanıcısının avatarı
 
Giriş: 21/07/2005
Mesaj: 7,318
Excel Vers. ve Dili:
İş:Excel 2007-Türkçe Ev:Excel 2003-Türkçe
Varsayılan

Alıntı:
turan1971 tarafından gönderildi Mesajı Görüntüle
herkese çok çok teşekkür ederim. makro en iyisi ve en hızlısıymış demek...

Duruma göre değişir. Sizin verilere göre özet tablo daha kullanışlı ve daha basittir.
Ali Çevrimdışı   Alıntı Yaparak Cevapla
Yanıtla


Konu Araçları
Görünüm Modları

Gönderme Kuralları
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Açık
SimgelerAçık
[IMG] kodu Açık
HTML kodu Kapalı


Saat 10:25


Bu forum Elit NET - www.elitnet.com.tr tarafından sunulmaktadır.


Bahis Forum - Define - Çorlu Kamera - Çorlu Petek Temizleme - Site Yönetimi - TYPO3 Türkiye - 2015 Fuar - Çorlu Mimarlık - Çorlu Hotel
Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Advertisement System V2.6 By   Branden