• DİKKAT

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

Topla aktar

Katılım
2 Haziran 2015
Mesajlar
349
Excel Vers. ve Dili
2010
Merhaba hayırlı geceler benim sorunum şu RAPOR sayfasında "A" sütununda ki veriyi "ANASAYFA" "A" sütununa aktarırken, aktarılan veriyi "F" sütununda "OK","OOW" ve BOŞ satırlardaki değerine bakarak "K" sütununda süz topla ve tek part_no olarak ve taplam adet olarak aktar örnek sonuç şöyle :

PART_NO ADET
120-123457 28 gibi

kolay gelsin teşekürler..

http://s8.dosya.tc/server5/ap8wc6/TOPLA_AKTAR.rar.html
 
Aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub aktar()
Set s1 = Sheets("RAPOR")
Set s2 = Sheets("ANASAYFA")
son = s1.Cells(Rows.Count, "A").End(3).Row
For i = 2 To son
    yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
    If WorksheetFunction.CountIf(s2.Range("A2:A" & yeni), s1.Cells(i, "A")) = 0 Then
        s2.Cells(yeni, "A") = s1.Cells(i, "A")
        s2.Cells(yeni, "K") = WorksheetFunction.SumIf(s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("K2:K" & son))
    End If
Next
    
End Sub
 
merhaba sayın yusuf44 kodlar sorunusuz topluyor, fakat benim isteğim aktarırken "OK" "OOW" ve BOŞ satırları süzüp aktarması örnek dosyamda "F" sütununda "OK"OOW" ve BOŞ satırlar haricinde farklı değerlerde olabiliyor, ve ayrıca "SAY" adlı sayfada aynı kodları süzüp eğersay yapıp toplam adete eklemesi teşekkürler..
örnek : ANASAYFA

120-123457 OK 15
120-123457 OOW 20
120-123457 5

SAY sayfası : 120-123457 20 toplam adet 55 şeklinde kolay gelsin.
 
Son düzenleme:
Aşağıdaki gibi deneyiniz:

Kod:
Sub aktar()
Set s1 = Sheets("RAPOR")
Set s2 = Sheets("ANASAYFA")
son = s1.Cells(Rows.Count, "A").End(3).Row
For i = 2 To son
    If s1.Cells(i, "F") = "OK" Or s1.Cells(i, "F") = "OOW" Or s1.Cells(i, "F") = "" Then
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        If WorksheetFunction.CountIf(s2.Range("A2:A" & yeni), s1.Cells(i, "A")) = 0 Then
            s2.Cells(yeni, "A") = s1.Cells(i, "A")
            s2.Cells(yeni, "K") = WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OK") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OOW") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "")
        End If
    End If
Next
    
End Sub
 
Merhaba sayın yusuf44 kodlarınız istenilen işlemi yapıyor, fakat RAPOR sayfası "K" sütunundaki adet "0" ise toplama yapmıyor yardımcı olurmusunuz
 
Gelin şöyle yapalım ki bu konu da diğer konu gibi uzamasın:

Örnek dosyanızda her durumu gösterir veriler ve bu verilere göre de sonuç bulunsun. O sonucun neden öyle olması gerektiğini de açıklayın.

Ayrıca 0’ı nasıl toplayacak anlamadım.
 
Merhaba sayın yusuf 44 örnek sayfam gerçek sayfama uygun yapıda tekrar yüklüyorum kodlar çalışıyor fakat kodlarınız "SAY" adlı sayfada işlem yapıyormu? "RAPOR" Sayfasında toplama yapıyor ve aktarıyor buraya kadar tamam bir önceki mesajımda da belirttiğim gibi," RAPOR" sayfası "A" sütununda olan kodlar,"SAY" adlı sayfadada sayı olarak değil değer olarak mevcut onun için "SAY" adlı sayfada eğersay yapıp "ANASAYFA" aktarılan adete artı sayı olarak eklenecek ve ayrıca bazı değerler 2 defa "OK" "OOW" ve BOŞ olarak geçiyor teşekkürler...

http://s8.dosya.tc/server5/ot32ds/TOPLA_AKTAR_TEKRAR.rar.html
 
Merhaba.

Önceki mesajınızı ilk gönderdiğinizde bu şekilde değildi. Ben son kodu gönderdikten sonra mesajınızı değiştirmişsiniz. dolayısıyla görmediğim bir isteğinizi yerine getiremem.

Ben sizden her durumu gösterir örnek veri ve bunun sonuç durumunu göstermenizi istiyorum ancak siz bunu yerine getirmiyorsunuz. Biraz da siz bize yardımcı olmak için gayret gösterirseniz çok iyi olacak.

Son yüklediğiniz dosyada anasayfada bazı veriler var. Makroyu hiç değiştirmeden çalıştırdığımda da aynı o sonucu veriyor. Eğer o sonucu kendiniz yazdıysanız yani olması gereken sonuç öyleyse makro doğru çalışıyor demektir. Eğer o sonuç değilse neden olması gereken sonucu göstermekten imtina ediyorsunuz anlamıyorum.

Bu mesajı yazarken kontrol ettim, son verdiğim kodu dosyanıza uygulamamışsınız bile. Böyle olduğunu görünce o kadar uğraşımın boşa gittiğini hissediyorum.

SAY sayfasındaki kodların Anasayfa'ya adet olarak eklenmesi için kodu aşağıdaki şekilde kullanabilirsiniz:

Kod:
Sub aktar()
Set s1 = Sheets("RAPOR")
Set s2 = Sheets("ANASAYFA")
Set s3 = Sheets("SAY")
sonsay = s3.Cells(Rows.Count, "E").End(3).Row
son = s1.Cells(Rows.Count, "A").End(3).Row
For i = 2 To son
    If s1.Cells(i, "F") = "OK" Or s1.Cells(i, "F") = "OOW" Or s1.Cells(i, "F") = "" Then
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        If WorksheetFunction.CountIf(s2.Range("A2:A" & yeni), s1.Cells(i, "A")) = 0 Then
            s2.Cells(yeni, "A") = s1.Cells(i, "A")
            s2.Cells(yeni, "K") = WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OK") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OOW") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "") + _
                                  WorksheetFunction.CountIf(s3.Range("E2:E" & sonsay), s1.Cells(i, "A"))
        End If
    End If
Next
    
End Sub

Son olarak :

ayrıca bazı değerler 2 defa "OK" "OOW" ve BOŞ olarak geçiyor teşekkürler...

Bu ne demek? Yani ne yapılması gerekiyor?
 
Kusura bakmayın sayın yusuf44 yeni dosyayı hazırladım kaydetmeden yüklemişim benim hatam,
sizide uğraştırıyorum size dosyamın son halini sonuçlarıyla yüklüyorum "RAPOR" sayfasında gerekli açıklama var birde "RAPOR" sayfasında aktarılan satırların "A" ile "M" arasında aktarım olması gerekiyor kolay gelsin teşekkürler.

http://s8.dosya.tc/server5/uw0fgg/TOPLA_AKTAR_TEKRAR_SON_HALI.rar.html
 
Üzgünüm ama benimle dalga geçtiğinizi düşünüyorum artık. Ne en son verdiğim kodu ne de bir önceki kodu dosyanıza uygulamışsınız! Bu kodları dosyanıza uygulamayacaksanız ben niye uğraşıyorum ki?

A ile M arasını aktarmak nasıl olacak, neden şimdiye kadar bahsetmediniz?
 
Kusura bakmayın sayın yusuf44 dalga filan yok bütün kodlarınızı uyguluyorum ama istediğim sonuca ulaşmayınca tekrar yardım istiyorum hepsi bu son halinde "SAY" sayfasında "E" yerine "F" sütununu olacaktı değiştirince tam oldu sorun çözüldü
Set s3 = Sheets("SAY")
sonsay = s3.Cells(Rows.Count, "F").End(3).Row
son = s1.Cells(Rows.Count, "A").End(3).Row
WorksheetFunction.CountIf(s3.Range("F2:F" & sonsay), s1.Cells(i, "A"))

kodlarınız sorunsuz işlem yapıyor Allah razı olsun sizden kendi hayırlı günler...
 
Son düzenleme:
Öyle diyorsunuz ama eklediğiniz örnek dosyalarda verdiğim son kodları değil de ilk kodu kullanıyorsunuz.

"istediğim olmayınca" diyorsunuz ama öyle bir şey yok, ilk kod olmamış olsa bile ikinci ve üçüncü kodlar tam olarak istediğiniz şeyi yapmaktadır. Yani sorunuzda ne istediyseniz kodlar da birebir onu yapmaktadır. Ancak siz her mesajınızda daha önce istemediğiniz bir şeyi de ekliyorsunuz ve "kod çalışmıyor/doğru çalışmıyor" diyorsunuz maalesef.

ilk mesajınızdaki TOPLA AKTAR dosyasında SAY adlı bir dosya yoktu. Sonradan yüklediğiniz TOPLA AKTAR TEKRAR dosyasında SAY sayfası var ve o sayfadaki kodların da sayılıp eklenmesini istediniz. O kodlar SAY sayfasında E sütunundaydı. Ben ona göre kodu güncelledim ve istediğinizi yaptım.

Son yüklediğiniz dosyada ise SAY sayfasında kodlar E sütununda değil F sütununda. Ben kodları önceki dosyaya yani E sütununa göre yapmıştım, başka dosyada uygulayınca elbette ki doğru sonuç vermez.

Ayrıca bir önceki mesajımda A:M arasının nasıl aktarılacağını sormuştum ama ona da cevap vermediniz.

Sonradan değişen ve gerekli özen gösterilmeyen sorular ve dosyalarla ilgilenmek zor oluyor. Emeğimizin hiç kıymeti yok diye düşünüyoruz.

Lütfen sorularınızı tam olarak ne istiyorsanız o şekilde ve ona uygun örnek dosyayla sorunuz.
 
Haklısınız yusuf44 o bizim eksikliğimiz hakkınızı helal edin,kodlarıız sorunsuz çalışıyor şuan "RAPOR" sayfası "A:M" aralığında dolu satırlar var, o satırları düşeyara ile "ANASAYFA" "A:M" aralığına getiriyorum dosyamı biraz kasıyor
eğer eklemem gereken kodlar varsa size zahmet olmazsa yazarsanız eklerim teşekkürler kolay gelsin..
 
Aşağıdaki kodları deneyiniz:

Kod:
Sub aktar()
Set s1 = Sheets("RAPOR")
Set s2 = Sheets("ANASAYFA")
Set s3 = Sheets("SAY")
sonsay = s3.Cells(Rows.Count, "F").End(3).Row
son = s1.Cells(Rows.Count, "A").End(3).Row
For i = 2 To son
    If s1.Cells(i, "F") = "OK" Or s1.Cells(i, "F") = "OOW" Or s1.Cells(i, "F") = "" Then
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        If WorksheetFunction.CountIf(s2.Range("A2:A" & yeni), s1.Cells(i, "A")) = 0 Then
            s1.Range("A" & i & ":M" & i).Copy: s2.Cells(yeni, "A").PasteSpecial Paste:=xlPasteValues
            s2.Cells(yeni, "K") = WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OK") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "OOW") + _
                                  WorksheetFunction.SumIfs(s1.Range("K2:K" & son), s1.Range("A2:A" & son), s1.Cells(i, "A"), s1.Range("F2:F" & son), "") + _
                                  WorksheetFunction.CountIf(s3.Range("F2:F" & sonsay), s1.Cells(i, "A"))
        End If
    End If
Next
    
End Sub
 
Geri
Üst