Excel 3 Ayrı sütündaki saat bilgisiyle rapordaki sütünları otomatik toplama

Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
Merhaba Arkadaşlar,

Elimde 100 kişilik excel personel listesi var, ve bu excelde 3 ayrı sütünda personel saat dilimleri var, sistemden csv raporu çekiyorum ve her seferinde bu 3 ayrı sütünu exceldeki personel listesindeki saat bilgisiyle rapordaki saat dilimini manul toplayıp toplamını yazıyorum bunun için makro hazırlamam konusunda yardımcı olursanız çok sevinirim. şimdiden teşekkürler.
 
Katılım
6 Kasım 2004
Mesajlar
199
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Merhaba,
Örnek dosya ekleyebilir misiniz?
 
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
Rica etsem link olarak eklediğim dosyaya formülü uygulayıp kaydedip bana yollayabilirmisiniz
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Rapor isimli sayfa için, formül ile çözüm önerisi isterseniz;
-- aşağıdaki formülü örneğin E2 hücresine uygulayın,
-- formülü sağa ve aşağı doğru kopyalayın.
Ans Sayfa isimli sayfada da DÜŞEYARA işlevini kullanarak bu formül sonuçlarını isime göre çağırtabilirsiniz.
=0+(EĞER(EHATALIYSA(SOLDAN(B2;BUL("h";B2)-1));"0";SOLDAN(B2;BUL("h";B2)-1))&":"&YERİNEKOY(EĞER(EHATALIYSA(PARÇAAL(B2;MAK(BUL("m";B2)-2;1);2));"0";PARÇAAL(B2;MAK(BUL("m";B2)-2;1);2));"m";"")&":"&EĞER(EHATALIYSA(PARÇAAL(B2;BUL("s";B2)-2;2));"0";PARÇAAL(B2;BUL("s";B2)-2;2)))
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Sayfadan formülü kopyalayıp uygulayabilirsiniz.
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Bir vba kodlarınız deneyiniz.
Kod:
Sub saat()
Dim s1 As Worksheet: Dim s2 As Worksheet
Dim y As Integer: Dim i As Integer
Set s1 = Sheets("Ans Sayfa")
Set s2 = Sheets("Rapor")
Application.ScreenUpdating = False
Range("B2" & ":" & "D" & s1.Cells(65336, "D").End(3).Row).ClearContents
For y = 2 To 4
For a = 2 To s2.Range("A65500").End(3).Row
    met = s2.Cells(a, y).Text
    For b = 1 To Len(met)
        If IsNumeric(Mid(met, b, 1)) Then
            mety = mety & Mid(met, b, 1)
        Else
            mety = mety & " "
        End If
    Next
    s1.Cells(a, y).Value = WorksheetFunction.Trim(mety)
    mety = ""
s1.Cells(a, y).Value = WorksheetFunction.Substitute(s1.Cells(a, y), " ", ":")
Next
Next y
Application.ScreenUpdating = True
MsgBox "İŞLEM TAMAMLANDI", vbInformation, "BİLGİ"
End Sub
 
Son düzenleme:
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
merhaba bu kodu excelde nasıl kullanacağım rica etsem tarif edebilirmisiniz
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
İngilizçesi nasıl bilmiyorum.Türkçe için tarif ediyorum. Geliştirici sekmesinden Visual Basic tıklayınız.Açılan menüden ınsert tıklaynız ve Module tıklayınız.Sağdaki boş alana kodu kopyalayınız.Ans sayfasında Geliştirici ekleden bir buton ekleyiniz ve kodu atayınız.Sayfa adı ilk önce ana sayfa olarak görmüştüm Ans sayfa imiş değiştirdim.Son kodu kopyalayınız.
 
Son düzenleme:

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Merhaba. Sayın çıtır'ın müsadeleriyle.
Yanlış görmüyorsam; sayın çıtır'ın verdiği kod, hücrede hem saat, hem dakika, hem de saniye varsa doğru sonuç veriyor.
İsterseniz bir de aşağıdaki kod'u deneyin.
Kod:
KOD 16 NUMARALI CEVAPTA
 
Son düzenleme:
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
Birde şunu belirtmeyi unutmuşum sanırım Ana sayfa sheetinde A sütünundaki isim listesiyle Rapor Sheetindeki A sütünundaki isim sıralaması karışık olacak o sebeple bu işlemi karşılaştırma yaparak yapabilirmiyiz. Rapordaki isim Ana Sayfada yoksa ana sayfaya yazmasın Rapor sayfasında o kullanıcıyı yazamadığını belirten mesela kırmızı renk yapabilirmi. (yada Rapor sayfasındakileri ana sayfaya yazdığında rapor sayfasından silebilirmi)
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Benim verdiğim kod, Rapor sayfasındaki isim Ans Sayfada yoksa karşısını boş bırakıyor zaten.
Liste karışık olsa da ilgili satıra yazıyor.

Bu arada verdiğim kod'un başlıktan sonraki ilk satırında yer alan Set.... şeklindeki kısımda sayfa adlarını kontrol edin.
 
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
Evet farkettim az önce çok teşekkür ederim son birşey rica edeceğim Rapor sayfasından ana sayfaya yazdığı kullanıcıları rapor sayfasından silebilirmi yeni eklenen kullanıcıları farkedebilmek için.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Tekrar merhaba.

Aşağıdaki kod daha kısa ve aynı işlemi yapar.
Ayrıca Rapor sayfasında, saat verileri aktarılan kişilerin satırında E sütununa X yazar.
Böylece Rapor sayfasındaki hangi satırların Ana Sayfaya aktarıldığını anlamış olursunuz.
Rapor sayfasında E sütunu boş olanlar Ana Sayfaya aktarılmadı demektir.
NOT: Kod güncellendi, 14.08.2018 19:03
Rich (BB code):
Sub VPN_RAPOR()
Set ana = Sheets("Ana Sayfa"): Set r = Sheets("Rapor")
rson = r.Cells(Rows.Count, 1).End(3).Row
ason = ana.Cells(Rows.Count, 1).End(3).Row
ana.Range("E2:F" & rson).ClearContents
ana.Range("E2:F" & rson).NumberFormat = "[hh]:mm:ss"
On Error Resume Next
For sat = 2 To rson
    For sut = 2 To 3
        sa = 0: dk = 0: sn = 0
        For sp = 0 To 2
            deg = Right(Split(r.Cells(sat, sut), " ")(sp), 1)
            If deg = "h" Then sa = Replace(Split(r.Cells(sat, sut), " ")(sp), deg, "")
            If deg = "m" Then dk = Replace(Split(r.Cells(sat, sut), " ")(sp), deg, "")
            If deg = "s" Then sn = Replace(Split(r.Cells(sat, sut), " ")(sp), deg, "")
        Next
        isim = Split(r.Cells(sat, 1), "\")(1)
        If WorksheetFunction.CountIf(ana.[D:D], isim) > 0 Then
            asat = WorksheetFunction.Match(isim, ana.Range("D2:D" & ason), 0) + 1
            ana.Cells(asat, sut + 3) = ana.Cells(asat, sut + 3) + TimeValue(sa & ":" & dk & ":" & sn)
            r.Range("A" & sat & ":C" & sat).Interior.Color = vbGreen
        Else
            r.Range("A" & sat & ":C" & sat).Interior.Color = vbRed
        End If
10: Next: Next: ana.Columns("A:Q").AutoFit
MsgBox "İşlem tamamlandı."
End Sub
 
Son düzenleme:
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
Ömer BARAN çok teşekkür ederim ellerinize sağlık daha ne olsun :)
çıtır çok teşekkür ederim, ellerinize sağlık
Hücre ve satır değiştiğinde kodda nereleri değiştirmem gerekiyor acaba
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
İşte tam da bu nedenle; soruların gerçek belgeyle aynı yapıda örnek belge üzerinden sorulmasını istemekteyiz.
.
 
Katılım
15 Aralık 2011
Mesajlar
43
Excel Vers. ve Dili
2016 Ingilizce
AYNI YAPIDA DOSYA LINKI
Merhaba haklısınız sanırım, linkteki dosyada yine Rapor sayfasından alması gerekiyor Ana sayfadaki E ve F sütünuna gelmesi gerekiyor datanın kullanıcı adı bilgisiyle karşılaştırıp birde Rapor dosyasındaki kullanıcı adlarında domain bilgisi yazıyor domain ismini sabitleyip karşılaştırabilirmiyiz.
 
Üst