arge merkezi içeride kalınan sürelerin toplamı hk.

Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
Arkadaşlar merhaba forumu dün keşfettim ve incelediğimde excel hakkında hiç birşey bilmediğimi anladım :) . Kayseride bir mühendislik firmasında çalışıyorum. Arge merkezimizde çalışan arkadaşların giriş çıkışlarını access cihazında kayıt altına alıyoruz lakin cihazın bize verdiği excel formatındaki raporu düzenlemem gerekiyor. Kısaca veri raporumuz u cihazdan aldığımız zaman giriş ve çıkış saatlerini alt alta karışık bir şekilde sıralıyor. zamana göre. Ben bunu isme göre filitrelediğimde ise giriş ve çıkış alt alta gelmiyor. bende yeni bir sayfada kullanıcı verileri ve saatini yan yana olacak şekilde yapmaya çalıştım, bu seferde veri sayfasındaki bilgileri değiştirdiğimde rapor sayfamdaki formuller boşa düşüyor. ayrıca veri sayfamdaki satırlarının herhangi birinide boş hücre varsa onu kopyalamak istemiyorum. çok uzun ve karışık oldu kusura bakmayın. dosya örneğini sisteme yüklüyorum değerli vaktinizi ayırabilirseniz çok memnun olurum. Hepinize iyi çalışmalar
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
arkadaşlar size zahmet bi fikir verseniz
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Listede bir gariplik yok mu, isme ve zamana göre sıralandığında aynı kişi çıkış yapmadan tekrar giriş yapmış görünüyor. Normalde bu sıralamada aynı kişi için bir giriş bir çıkış arka arkaya olması gerekmez mi?
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
liste yi ben deneme amaçlı almıştım dediğinizde haklısınız. o şekilde bir liste alıp yükleme yapıyım
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki makroyu deneyiniz:

PHP:
Sub argeciler()
    Set s1 = Sheets("veriler")
    Set s2 = Sheets("sonuçlar")
    son1 = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)
    son2 = WorksheetFunction.Max(3, s2.Cells(Rows.Count, "A").End(3).Row)

    s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("B2:B" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    s1.Sort.SortFields.Add Key:=Range("A2:A" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With s1.Sort
        .SetRange Range("A1:I" & son1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    sonC = s1.Cells(Rows.Count, "C").End(3).Row
    s2.Range("A3:M" & son2) = ""
    For i = 2 To sonC Step 2
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        s2.Cells(yeni, "A") = s1.Cells(i, "A")
        s2.Cells(yeni, "G") = s1.Cells(i + 1, "A")
        s2.Cells(yeni, "B") = s1.Cells(i, "C")
        s2.Cells(yeni, "H") = s1.Cells(i + 1, "C")
        s2.Cells(yeni, "C") = s1.Cells(i, "D")
        s2.Cells(yeni, "I") = s1.Cells(i + 1, "D")
        s2.Cells(yeni, "D") = s1.Cells(i, "E")
        s2.Cells(yeni, "J") = s1.Cells(i + 1, "E")
        s2.Cells(yeni, "E") = s1.Cells(i, "F")
        s2.Cells(yeni, "K") = s1.Cells(i + 1, "F")
        If s2.Cells(yeni, "B") = s2.Cells(yeni, "H") Then
            s2.Cells(yeni, "M").FormulaR1C1 = "=RC[-6]-RC[-12]"
        Else
            s2.Cells(yeni, "M") = "İsimler Farklı"
        End If
    Next
    Range("1:13").EntireColumn.AutoFit
End Sub
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
yusuf bey makroyu nasıl işleyeceğim bilgilendirirseniz çok sevinirim
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
Aşağıdaki makroyu deneyiniz:

PHP:
Sub argeciler()
    Set s1 = Sheets("veriler")
    Set s2 = Sheets("sonuçlar")
    son1 = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)
    son2 = WorksheetFunction.Max(3, s2.Cells(Rows.Count, "A").End(3).Row)

    s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("B2:B" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    s1.Sort.SortFields.Add Key:=Range("A2:A" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With s1.Sort
        .SetRange Range("A1:I" & son1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    sonC = s1.Cells(Rows.Count, "C").End(3).Row
    s2.Range("A3:M" & son2) = ""
    For i = 2 To sonC Step 2
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        s2.Cells(yeni, "A") = s1.Cells(i, "A")
        s2.Cells(yeni, "G") = s1.Cells(i + 1, "A")
        s2.Cells(yeni, "B") = s1.Cells(i, "C")
        s2.Cells(yeni, "H") = s1.Cells(i + 1, "C")
        s2.Cells(yeni, "C") = s1.Cells(i, "D")
        s2.Cells(yeni, "I") = s1.Cells(i + 1, "D")
        s2.Cells(yeni, "D") = s1.Cells(i, "E")
        s2.Cells(yeni, "J") = s1.Cells(i + 1, "E")
        s2.Cells(yeni, "E") = s1.Cells(i, "F")
        s2.Cells(yeni, "K") = s1.Cells(i + 1, "F")
        If s2.Cells(yeni, "B") = s2.Cells(yeni, "H") Then
            s2.Cells(yeni, "M").FormulaR1C1 = "=RC[-6]-RC[-12]"
        Else
            s2.Cells(yeni, "M") = "İsimler Farklı"
        End If
    Next
    Range("1:13").EntireColumn.AutoFit
End Sub


ellerinize sağlık işimi gördü teşekkur ederim
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
En sonda hangi sayfa olduğunu belirtmemişim.

s2.Range("1:13").EntireColumn.AutoFit

şeklinde değiştirmeniz iyi olur.
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
yusuf bey altın üye olmak istiyorum daha çok işlerim olacak ve daha iyi iletişim kurma adına ne yapmalıyım
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
yusuf bey makroyu işledim problem görünmüyor birde son aşamada aynı isimde olanların içeride kaldığı süreyi toplam verebileceği bir satır oluşturabilirmiyim.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki gibi dener misiniz?

PHP:
Sub argeciler()
    Set s1 = Sheets("veriler")
    Set s2 = Sheets("sonuçlar")
    son1 = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)
    son2 = WorksheetFunction.Max(3, s2.Cells(Rows.Count, "A").End(3).Row)

    s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("B2:B" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    s1.Sort.SortFields.Add Key:=Range("A2:A" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With s1.Sort
        .SetRange Range("A1:I" & son1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    sonC = s1.Cells(Rows.Count, "C").End(3).Row
    s2.Range("A3:M" & son2) = ""
    For i = 2 To sonC Step 2
        yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
        s2.Cells(yeni, "A") = s1.Cells(i, "A")
        s2.Cells(yeni, "G") = s1.Cells(i + 1, "A")
        s2.Cells(yeni, "B") = s1.Cells(i, "C")
        s2.Cells(yeni, "H") = s1.Cells(i + 1, "C")
        s2.Cells(yeni, "C") = s1.Cells(i, "D")
        s2.Cells(yeni, "I") = s1.Cells(i + 1, "D")
        s2.Cells(yeni, "D") = s1.Cells(i, "E")
        s2.Cells(yeni, "J") = s1.Cells(i + 1, "E")
        s2.Cells(yeni, "E") = s1.Cells(i, "F")
        s2.Cells(yeni, "K") = s1.Cells(i + 1, "F")
        If s2.Cells(yeni, "B") = s2.Cells(yeni, "H") Then
            s2.Cells(yeni, "M").FormulaR1C1 = "=RC[-6]-RC[-12]"
        Else
            s2.Cells(yeni, "M") = "İsimler Farklı"
        End If
    Next
   [P:Q] = ""
    s2.[P1] = "Adı Soyadı"
    s2.[Q1] = "Toplam İçerde Kalma Süresi"
    [P1:Q1].Font.Bold = True
    s2.Range("B3:B" & yeni).Copy s2.[P2]
    Application.CutCopyMode = False
    s2.Range("$P$1:$P$" & yeni).RemoveDuplicates Columns:=1, Header:=xlYes
    sonP = WorksheetFunction.Max(2, s2.Cells(Rows.Count, "P").End(3).Row)
    For j = 2 To sonP
        s2.Cells(j, "Q") = WorksheetFunction.SumIf(s2.Range("B2:B" & yeni), s2.Cells(j, "P"), s2.Range("M2:M" & yeni))
    Next
    Range("Q2:Q" & sonP).NumberFormat = "[$-x-systime]h:mm:ss AM/PM"
    Range("P2:Q" & sonP).VerticalAlignment = xlCenter
    Range("Q2:Q" & sonP).HorizontalAlignment = xlCenter
    Range("1:19").EntireColumn.AutoFit
   
End Sub
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
:)) emeğinize sağlık. tam istediğim gibi oldu şimdi. İnşallah bende bi şekilde diğer arkadaşlara faydalı olurum.
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
yusuf bey merhaba tabloda bizden kaynaklı bazı problemler oluşmakta, örneğin kullanııcı giriş yapıp çıkış yapmadan bölgeyi terk ettiginde tekrar giriş yapıyor. bu sebeple çift giriş ama çıkış olmuyor. bu kayıtları haliyle hesaplayamıyoruz. giriş -giriş yada çıkış-çıkış oldugunda bu kayıtları baz almayabilirmiyiz
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodu dener misiniz?

PHP:
Sub argeciler()
    Set s1 = Sheets("veriler")
    Set s2 = Sheets("sonuçlar")
    son1 = WorksheetFunction.Max(2, s1.Cells(Rows.Count, "A").End(3).Row)
    son2 = WorksheetFunction.Max(3, s2.Cells(Rows.Count, "A").End(3).Row, s2.Cells(Rows.Count, "G").End(3).Row)

    s1.Sort.SortFields.Clear
    s1.Sort.SortFields.Add Key:=Range("B2:B" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    s1.Sort.SortFields.Add Key:=Range("A2:A" & son1) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With s1.Sort
        .SetRange Range("A1:I" & son1)
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    sonC = s1.Cells(Rows.Count, "C").End(3).Row
    s2.Range("A3:M" & son2) = ""
    For i = 2 To sonC
        If s1.Cells(i, "E") = "giriş" Then
            yeni = WorksheetFunction.Max(s2.Cells(Rows.Count, "A").End(3).Row + 1, s2.Cells(Rows.Count, "G").End(3).Row + 1)
            s2.Cells(yeni, "A") = s1.Cells(i, "A")
            s2.Cells(yeni, "B") = s1.Cells(i, "C")
            s2.Cells(yeni, "C") = s1.Cells(i, "D")
            s2.Cells(yeni, "D") = s1.Cells(i, "E")
            s2.Cells(yeni, "E") = s1.Cells(i, "F")
        Else
            giris = s2.Cells(Rows.Count, "A").End(3).Row
            cikis = s2.Cells(Rows.Count, "G").End(3).Row
            If cikis >= giris Then giris = cikis + 1
'            If s2.Cells(giris, "B") <> s1.Cells(i, "C") Then giris = giris + 1
            s2.Cells(giris, "G") = s1.Cells(i, "A")
            s2.Cells(giris, "H") = s1.Cells(i, "C")
            s2.Cells(giris, "I") = s1.Cells(i, "D")
            s2.Cells(giris, "J") = s1.Cells(i, "E")
            s2.Cells(giris, "K") = s1.Cells(i, "F")
        End If
                
    Next
    sonA = s2.Cells(Rows.Count, "A").End(3).Row
    sonG = s2.Cells(Rows.Count, "G").End(3).Row
    For j = 3 To WorksheetFunction.Max(3, sonA, sonG)
        If s2.Cells(j, "B") = s2.Cells(j, "H") Then
            s2.Cells(j, "M").FormulaR1C1 = "=RC[-6]-RC[-12]"
        ElseIf s2.Cells(j, "A") = "" Then
            s2.Cells(j, "M") = "Giriş yok"
        ElseIf s2.Cells(j, "G") = "" Then
            s2.Cells(j, "M") = "Çıkış Yok"
        Else
            s2.Cells(j, "M") = "İsimler Farklı"
        End If
    Next
    [P:Q] = ""
    s2.[P1] = "Adı Soyadı"
    s2.[Q1] = "Toplam İçerde Kalma Süresi"
    [P1:Q1].Font.Bold = True
    s2.Range("B3:B" & giris).Copy s2.[P2]
    Application.CutCopyMode = False
    s2.Range("$P$1:$P$" & giris).RemoveDuplicates Columns:=1, Header:=xlYes
    sonP = WorksheetFunction.Max(2, s2.Cells(Rows.Count, "P").End(3).Row)
    For j = 2 To sonP
        s2.Cells(j, "Q") = WorksheetFunction.SumIf(s2.Range("B2:B" & giris), s2.Cells(j, "P"), s2.Range("M2:M" & giris))
    Next
    For p = sonP To 2 Step -1
        If s2.Cells(p, "P") = "" Then
            s2.Range("P" & p & ":Q" & p).Delete shift:=xlUp
        End If
    Next
    Range("Q2:Q" & sonP).NumberFormat = "[$-x-systime]h:mm:ss AM/PM"
    Range("P2:Q" & sonP).VerticalAlignment = xlCenter
    Range("Q2:Q" & sonP).HorizontalAlignment = xlCenter
    Range("1:19").EntireColumn.AutoFit
End Sub
 
Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
17 nolu mesajdaki kodu hatalarından dolayı güncelledim.
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
çok teşekkur ederim hatasız çalışıyor. destek için minnettarım.
 
Katılım
11 Eylül 2019
Mesajlar
16
Excel Vers. ve Dili
office 2019
Altın Üyelik Bitiş Tarihi
20-09-2024
Yusuf bey merhaba son bir değişiklik yapmam gerekiyor makroda yaptığımız sayfayı her yönü ile denedim problemsiz çalışıyor. şimdi cihazlarımı yerlerine takacağım lakin ufak bir değişiklik yapmam gerekiyor. Daha önce giriş çıkış olarak aldığımız saat verisini son hücredeki iç-dış olarak almamız gerekiyor. ben örnek dosyayı yüklesem bakma şansınız varmıdır.
 

Ekli dosyalar

Üst