noya göre satır ayırma

Katılım
11 Mart 2005
Mesajlar
33
Excel Vers. ve Dili
2007 türkçe
Merhabalar , yine bana göre aşılmaz ama üstatlar için çerez bir problemle karşı karşıyayım.Ekli tabloda yapılmak istenen: d stununda fatura numaraları h stununda ise satır türleri var.Fatura numarasına göre satırında hizmet olmayan faturaları ayıklamak.Şimdiden teşekkürler
 
Katılım
11 Mart 2005
Mesajlar
33
Excel Vers. ve Dili
2007 türkçe
tablo burda

pardon tabloyu ekleyememişim. buyrun tablo burda
 

Korhan Ayhan

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

VERİ-FİLTRE UYGULA-OTOMATİK FİLTRE UYGULA menüsünden bu istediğiniz kolaylıkla gerçekleştirebilirsiniz. G sütununda iken filtrelemeyi çalıştırıp seçeneklerden "Hizmet" seçeneğini seçerseniz istemediğiniz satırlar otomatik olarak gizlenecektir.
 
Katılım
11 Mart 2005
Mesajlar
33
Excel Vers. ve Dili
2007 türkçe
sorun biraz daha karmaşık

burada yapılmak istenen fatura numarasında hizmet yoksa o numaralı fatura dışlanacak ama fatura numarasının herhangi satırında hizmet varsa hizmet olmayan satırlar da kalacak.Yani faturanın içinde hizmet satırı varsa o fatura kalacak, hizmet satırı olmayan faturalar dışlanacak

Örnek:
ft no------------satır türü---------tutar
123--------------malzeme----------5--kalacak
123--------------malzeme----------3--kalacak
123--------------hizmet------------2--kalacak
557--------------malzeme----------6--gidecek
557--------------malzeme----------4--gidecek
443--------------malzeme----------5--kalacak
443--------------hizmet------------3--kalacak
 

Korhan Ayhan

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

Aşağıdaki kodu denermisiniz.

Kod:
Sub LİSTEYİ_AYIKLA()
    SON = [G65536].End(3).Row
    For X = SON To 4 Step -1
    SAY = Evaluate("=SUMPRODUCT((C4:C" & SON & "=""" & Cells(X, 3) & """)*(G4:G" & SON & "=""Hizmet""))")
    If SAY = 0 Then Rows(X).Delete
    Next
    MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
End Sub
 
Katılım
11 Mart 2005
Mesajlar
33
Excel Vers. ve Dili
2007 türkçe
mükemmel

ecelent, elinize sağlık mükemmel olmuş.Çok teşekkürler
 
Katılım
11 Mart 2005
Mesajlar
33
Excel Vers. ve Dili
2007 türkçe
ah VBA ah

sayın cost control,
yazdığınız bu kodu satır satır açıklar mısınız. VBA yı öğrenmeye çalışıyorum da.Excel'i deneme yanılma yöntemiyle öğrendim.Baya iyi kullandığımı düşünüyorum.Yalnız şu VBA yı bir türlü çözemedim. Form dan pekçok döküman indirip okudum ama yeterli olmuyor.Ne tavsiye edersiniz.VBA yı da çözebilirsem mükemmel olacak
 

Korhan Ayhan

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

Kod yazmayı öğrenmeniz için bence temelden sağlıklı bir şekilde başlamalısınız. Temel formüllerin kullanımını iyi bilmelisiniz. Çünkü bu formüllerin çoğunu kod kısmındada kullanabiliyoruz. Eğer bunlara hakim olmazsanız kod yazmada çok bocalarsınız. Ayrıca kodlarda kullanılan bazı terimlerin anlamlarını öğrenmeniz gerekmektedir. Mesela (Dim, ReDim, CDate, CLng, CDbl, String, Variant, Boolean, Byte, Long, Integer, Double, For-Next, Do-While, For Each-Next) gibi bu örnekler arrtırabilir. Ben aklıma ilk gelen ve en çok kullanılanları yazdım.

Bunları öğrenmek için dersane bölümünü incelemenizi ve cevaplara verilen kodları kullanarak sürekli egzersiz yapmanızı tavsiye ederim.

Önerdiğim kodun açıklamaları;

Kod:
Sub LİSTEYİ_AYIKLA()
'1- MAKROMUZA İSİM TANIMLIYORUZ.
    SON = [G65536].End(3).Row
'2- SON İSİMLİ DEĞİŞKENİMİZE G SÜTUNUNDAKİ EN SON DOLU HÜCRENİN SATIR NUMARASINI TANIMLIYORUZ.
    For X = SON To 4 Step -1
'3- X İSİMLİ BİR DÖNGÜ BAŞLATIYORUZ VE SON DEĞİŞKENİNİN ALDIĞI DEĞERDEN 4. SATIRA DOĞRU DEVAM ETMESİ İÇİN STEP -1 (-1 OLDUĞU İÇİN GERİYE DOĞRU ADIMLAYARAK GİDER) KOMUTUNU VERİYORUZ.
    SAY = Evaluate("=SUMPRODUCT((C4:C" & SON & "=""" & Cells(X, 3) & """)*(G4:G" & SON & "=""Hizmet""))")
'4- SAY İSİMLİ DEĞİŞKENİMİZE (SUMPRODUCT=TOPLA.ÇARPIM) FORMÜLÜ İLE C SÜTUNUNDA X DEĞERİNİN ALDIĞI HÜCREYİ (FATURA NO) VE BU HÜCRENİN G SÜTUNUNDAKİ KARŞILIĞINDA "HİZMET" İÇEREN HÜCRELERİ SAYDIRIYORUZ.
'   EVALUATE KOMUTU İSE KULLANILAN FORMÜLÜ KOD KISMINDA OTOMATİK OLARAK HESAPLAR VE SONUCU DÖNDÜRÜR.
    If SAY = 0 Then Rows(X).Delete
'5- SAY DEĞİŞKENİNİN DEĞERİNİ SORGULUYORUZ. EĞER DEĞER SIFIRA EŞİTSE DEMEKKİ ARANAN FATURA NOYA KARŞILIK GELEN G SÜTUNUNDA "HİZMET" DEĞERİNİ İÇEREN HÜCRE BULUNAMAMIŞTIR. BU SEBEPLE O SATIRI SİLİYORUZ.
    Next
'6- DÖNGÜYE DEVAM EDİYORUZ.
    MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation
'7- KULLANICIYI MESAJ İLE İŞLEMİN BİTTİĞİNE DAİR UYARIYORUZ.
End Sub
'8- MAKROMUZU SONLANDIRIYORUZ.
 
Üst