• DİKKAT

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

Mükerrer kayıtları birleştirme

udentr2002

Altın Üye
Katılım
5 Kasım 2006
Mesajlar
1,503
Excel Vers. ve Dili
iş yerinde Office 365
evde Office 365
Merhaba arkadaşalr sitede bir çok örnek avar ama bir türlü kendime uyarlayamadım.

Benim "Proje_Maliyet" adlı sayfamdaki
H4'den H10000'e kadar
j4'den j10000'e kadar
l4'den l10000'e kadar
n4'den n10000'e kadar
p4'den p10000'e kadar

Olan hücrelerdeki verileri alıp birleştirecek ve "Maliyet_Analizi" adlı sayfada A11'den itibaren mükerrer olarak yazacak koda ihityacım var.

o ilgili sütünlardaki verileri alacak tekrarsız olarak diğer sayfadaki yere yazacak

Şimdiden yardımcı olacakj arkadaşalara teşekkür ederim.
 
Bu konu hakkında yardım edecek bir hocam yokmu?
 
Selamlar,

Örnek dosya üzerinde ham verilerinizi ve görmek istediğiniz sonucu gösteren tablolarınızı hazırlayıp foruma eklerseniz daha hızlı yanıt alabilirsiniz.
 
Hocam öncelikle ilgilendiğiniz için teşekkür ederim.

Dosyamı ekliyorum.

Dosyada "Maliyet_Analizi" sayfasında "C8" hücresinde proje kodunu seçtikten sonra aynı sayfadaki Maliyet adlı düğmeye tıkladıktan sonra "C8" hücresindeki veriyi, "Proje_Maliyet" sayfasında "A" stünunda süzecek ve süzdükten sonra kullanılan cihazların gösterildiği H, J, L, N ve P stünlarındaki verilerden benzersiz olarak alacak mesala cihazlardan TABLET BASKI-1 makinası bir kaç yerde geçiyorsa onu tekrarsız olarak 1 defa "Maliyet_Analizi" sayfasında "A11" hücresinden başlayarak yazacak H, J, L, N ve P stünlarında gösterilen tüm cihazları tekrarsız olarak alırken ilgili cihaza ait kullanım süresi adlı stünlarda I, K, M, O ve Q kullanım süreleri vardır o cihaz adlarını alıp "Maliyet_Analizi sayfasına benzersiz olartak yazarken aynı cihaza ait kullanım sürelerinide toplayıp "B11" hücresinden başlayıp alt alta yazacak.

İnşallah anlatabilmişimdir hocam. Bu konuda yardımcı olursanız çok sevinirim. Yapmak istediğim projemin en önemli ve can alıcı noktası burası çünkü

Not: Dosyada da göreceğiniz gibi diğer stünlarada aynı işlem yapılacak ama siz eğer Cihazlarla ilgili olan yeri yapabilirseniz diğerleri için ben kodları oluşturmaya çalışacağım.
 

Ekli dosyalar

Bu sorunu nasıl çözebilirim. Lütfen yardım edebilirmisiniz?
 
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub MALİYET()
    Dim S1 As Worksheet, S2 As Worksheet, Satır As Integer, BUL As Range
    Dim HÜCRE As Range, WF As WorksheetFunction, X As Byte, Y As Byte
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set S1 = Sheets("Maliyet_Analizi")
    Set S2 = Sheets("Proje_Maliyet")
    Set WF = WorksheetFunction
    
    S1.Range("A11:B36").ClearContents
    Satır = 11
    
    If S1.Range("C8") = "" Then
        MsgBox "Lütfen PROJE KODU bilgisini giriniz !" & Chr(10) & "İşleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If
    
    S2.Rows("3:3").AutoFilter
    S2.Range("A3:DM3").AutoFilter
    S2.Range("A3:DM3").AutoFilter Field:=1, Criteria1:=S1.Range("C8")
    
    If S2.Range("A65536").End(3).Row > 3 Then
        For Each HÜCRE In S2.Range("A4:A" & S2.Range("A65536").End(3).Row).SpecialCells(xlCellTypeVisible)
            For X = 8 To 16 Step 2
                If S2.Cells(HÜCRE.Row, X) <> "" Then
                    If WF.CountIf(S1.Range("A:A"), S2.Cells(HÜCRE.Row, X)) = 0 Then
                        S1.Cells(Satır, 1) = S2.Cells(HÜCRE.Row, X)
                            For Y = 8 To 16 Step 2
                                If S2.Cells(HÜCRE.Row, Y) = S2.Cells(HÜCRE.Row, X) Then
                                    S1.Cells(Satır, 2) = S1.Cells(Satır, 2) + S2.Cells(HÜCRE.Row, Y + 1)
                                End If
                            Next
                            Satır = Satır + 1
                    Else
                        Set BUL = S1.Range("A:A").Find(S2.Cells(HÜCRE.Row, X), LookAt:=xlWhole)
                        If Not BUL Is Nothing Then
                            For Y = 8 To 16 Step 2
                                If S2.Cells(HÜCRE.Row, Y) = S2.Cells(HÜCRE.Row, X) Then
                                    S1.Cells(BUL.Row, 2) = S1.Cells(BUL.Row, 2) + S2.Cells(HÜCRE.Row, Y + 1)
                                End If
                            Next
                        End If
                    End If
                End If
            Next
        Next
    End If
    
    S2.Rows("3:3").AutoFilter Field:=1
    
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    Set WF = Nothing
 
    Application.ScreenUpdating = True
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Hocam gerçekten çok ama çok teşekkür ederim. Ellerinize bilginize ve yüreğinize sağlık. Çok uğraşmış olduğunuz belli gönderdiğiniz kodlarda. Hakkınızı helal edin.

Tekrarsız kayıtları yapıyor ancak şöyle bir sorun var.

süzmeyi yaptıktan sonra süzdüğü veriye ait Proje_Maliyet sayfasında cihazın kullanım sürelerini doğru olarak yapmıyor.

Maliyet_Analizi sayfasındaki proje koduna göre Proje_Maliyet sayfasında süzme yaptıktan sonra diyelimki UV-1 adlı cihaz toplamda 3 defa kullanılmış ve diyelimki 1. defasında 3 saat, 2. defasında 4 saat 3. defasında ise 1 saat kullanılmış olsun bu cihazı bir defa olarak Maliyet_Analizi sayfasındaki yere yazdıktan sonra yine Maliyet_Analizi sayfasındaki süre (st) yazan stüna sürelerin toplamını yazacak yani 8 yazacak.

Tekrar gözden geçirme şansınız varmı hocam.
 
Selamlar,

Proje_Maliyet sayfasındaki süre sütunlarında hem sayısal değerler var hem de "10dk" gibi metinsel değerler var. Açıkçası buna ben dikkat etmemiştim.

Sanıyorum sayısal değerler SAAT olarak değerlendirilecek.
"10dk" gibi yazanlarda DAKİKA olarak değerlendirilecek.

Sonuç olarakta toplam süreyi SAAT formatında görmekmi istiyorsunuz?
 
Selamlar hocam

Dediğiniz hücreleri metin olarak değilde düzelttim hepsini sayıya çevirdim ve ilgili stünu sayı olarak biçimlendirdim.

Kodları çalıştyırdığımda yine cihazın kullanım süresini toplayıp yazmıyor hocam.

Evet hocam zaten hücreyede sadece saat olarak girilecek yani oraya yanlış yazılmış onları düzelttim sonuçta gireceğim veri sadece saat olacak zaten
 
Selamlar,

Toplamıyor dediğiniz bir ürün için örnek verirseniz bende deneyebilirim.
 
Selamlar,

#6 nolu mesajımdaki kodda bir sorguyu fazladan eklediğimi farkettim. O sorguyu silip kodu güncelledim. Tekrar denermisiniz.
 
Hocam,

Mesala Maliyet Analizi sayfasında ki C8 hücresinde "10_553_MT" kodunu seçip kodları çalıştırın.

Siz manuel olarak Proje_Maliyeti sayfasına gidip o sayfada a stünunda ilgili proje kodunu manuel olarak filtreleyin. Orda göreceksinizki.

Mesala SHIMADZU S-7 9, 10, 8, 10, 9, ve 16 saat olmak üzere 6 defa kullanılmış

ama Maliyet_Analizi sayfasında SHIMADZU S-7 nin karşısında sadece 9 yazıyor. ordaki 9 yerine tüm kullanım saatlerinin toplamı olmalı yani "62".

Hocam sizi yoruyorum ama tekrar bakabilrmisiniz
 
Hocam denedim ama yine aynı şekilde toplamıyor
 
Selamlar,

Evet küçük bir detayı atlamışım.

#6 nolu mesajımdaki kodu yeniden güncelledim. İncelermisiniz.
 
Hocam 29 ekim tatilinden dolayı girememişti. Kusura bakmayın.

Allah razı olsun emeğinize ve bilginize sağlık çok işime Yaradı.
Kodlar çalışıyor.
Örnek dosyadada görmüşsünüzüdür. Aynı şeyi diğer stünlarada uygulamaya çalışacağım şimdi.
 
Korhan Üstadım;

Ben sizin verdiğiniz kodları programın tamamına uygulama çalıştım. Ama başaramdım sanırım.

Sizin gönderrdiğiniz kodlar sizde farkettiyseniz sadece Cihaz Maliyetini çıkarmakta. Ben bu kodları alıp Etken Madde maliyeti içinde yapmam lazım sizin gönderdiğiniz kodları ona uyarlamaya çalıtım ama olmadı hocam Etken Madde maliyetini çıkarmak için aynı mantık kullanılacak. Yine Maliyet_Analizi sayfasında C8 hücresinde yazan proje kodunu Proje_Maliyet sayfasında A stünunda süzecek burada bu sayfadan 19. stün 24. stün 29. stün 34. stün ve 39. stün etkin madde stünlarıdır. bu stünlardan aldığı verilerden Etkin madde adları aynı olanları tekrarsız olarak Maliyet_Analizi sayfasında D11 hücresinden başlayarak tekrarsız olarak yazacak. Proje Maliyetleri sayfasında etkin madde (21. stün, 26. stün, 31. stün, 36. stün ve 41. stünlarda kullanım miktarları vardır. Bu değerleride toplayıp Maliyet_Analizi sayfasındaki o etkin maddenin karşısına toplam olarak yazacak ben aşağıdaki kodu denedim. çalışıyor ama kullanım miktarlarını toplamadan yazıyor. uyarlamaya çalıştığım kod şöyle :

Kod:
Sub Etken_Maliyeti()
    Dim S1 As Worksheet, S2 As Worksheet, Satır As Integer, BUL As Range
    Dim HÜCRE As Range, WF As WorksheetFunction, X As Byte, Y As Byte
    
    Application.ScreenUpdating = False
    Application.Calculation = xlCalculationManual
    
    Set S1 = Sheets("Maliyet_Analizi")
    Set S2 = Sheets("Proje_Maliyet")
    Set WF = WorksheetFunction
    
    S1.Range("d11:e36").ClearContents
    Satır = 11
    
    If S1.Range("C8") = "" Then
        MsgBox "Lütfen PROJE KODU bilgisini giriniz !" & Chr(10) & "İşleminiz iptal edilmiştir.", vbExclamation
        Exit Sub
    End If
    
    S2.Rows("3:3").AutoFilter
    S2.Range("A3:DM3").AutoFilter
    S2.Range("A3:DM3").AutoFilter Field:=1, Criteria1:=S1.Range("C8")
    
    If S2.Range("A65536").End(3).Row > 3 Then
        For Each HÜCRE In S2.Range("A4:A" & S2.Range("A65536").End(3).Row).SpecialCells(xlCellTypeVisible)
            For X = 19 To 38 Step 5
                If S2.Cells(HÜCRE.Row, X) <> "" Then
                    If WF.CountIf(S1.Range("d:d"), S2.Cells(HÜCRE.Row, X)) = 0 Then
                        S1.Cells(Satır, 4) = S2.Cells(HÜCRE.Row, X)
                            For Y = 19 To 38 Step 5
                                If S2.Cells(HÜCRE.Row, Y) = S2.Cells(HÜCRE.Row, X) Then
                                    S1.Cells(Satır, 5) = S1.Cells(Satır, 5) + S2.Cells(HÜCRE.Row, Y + 2)
                                End If
                            Next
                            Satır = Satır + 1
                    Else
                        Set BUL = S1.Range("d:d").Find(S2.Cells(HÜCRE.Row, X), LookAt:=xlWhole)
                        If Not BUL Is Nothing Then
                            For Y = 18 To 38 Step 5
                                If S2.Cells(HÜCRE.Row, Y) = S2.Cells(HÜCRE.Row, X) Then
                                    S1.Cells(BUL.Row, 5) = S1.Cells(BUL.Row, 5) + S2.Cells(HÜCRE.Row, Y + 2)
                                End If
                            Next
                        End If
                    End If
                End If
            Next
        Next
    End If
    
    S2.Rows("3:3").AutoFilter Field:=1
    
    Set BUL = Nothing
    Set S1 = Nothing
    Set S2 = Nothing
    Set WF = Nothing
 
    Application.ScreenUpdating = True
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Hocam tekrar bakabilrseniz çok sevinirim.

Not: Sizin gönderdiğiniz kodu Cihaz_Maliyeti adında modüle yazdım, bu kodu Etken_Maliyeti müdülüne yazdım.
Maliyet_Analizi sayffaındaki düğmeyede,
Call Cihaz_Maliyeti
call Etken_Maliyeti
şeklinde kod atayarak yaptım
 
Çok özür hocam yanlış yazdığım satırı buldum :)

Kod:
For Y = 18 To 38 Step 5

yerine

Kod:
For Y = 39 To 38 Step 5


yazdım :)

Tekrar teşekkürler dilerim
 
Hocam göndermiş olduğunuz kodları dosyama uyguladım. Allah razı olsun çok işime yaradı.

O kodlarla proje kodu bazında maliyet çıkarmış olduk.

Hocam aynı mantıkla iki tarih arası maliyet çıkarmak istersek ne yapabilrim.
Yani Maliyet_Analizi sayfasında diyelimki A1 hücresinde başlangıç tarihi yazılı olsun B1 hücresinde ise bitiş tarihi olsun. Düğmeye tıklladığımızda bu iki tarih arasına gelecek verileri Proje_Maliyet sayfasında süzüp yine aynı mantıkla mükerrer kayıtları tek olarak yazacak ve onun karşısına gelecek sayıları toplayacak.

Bunun için ne yapabilirm hocam aynı mantıkla çalışacak kodlar ama bu defa proje kodunu süzmeyecek iki tarih arasını alıp ona göre aynı şeyi yapacak. Yardımcı olursanız çok sevinirim. Üstadım

SAYGILARIMLA
 
selam ekli yaşgruplarında hangi yaşta kaçar kişi var
yardımınızı bekliyorum
 
Geri
Üst