- Katılım
- 30 Aralık 2019
- Mesajlar
- 186
- Excel Vers. ve Dili
- Ofis 2019
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub Özet()
Dim Sh1 As Worksheet, Sh2 As Worksheet, Veri As Variant, Say As Integer
Set Sh1 = Worksheets("ANAVERİ")
Set Sh2 = Worksheets("ÖZET")
Son = Sh1.Range("B1").End(xlDown).Row
MinTarih = WorksheetFunction.Min(Sh1.Range("G:G"))
MaxTarih = WorksheetFunction.Max(Sh1.Range("G:G"))
Veri = Sh1.Range("A1").CurrentRegion.Value
ReDim Liste(1 To 1 + UBound(Veri), 1 To 4 + 2 * (MaxTarih - MinTarih))
For i = 3 To UBound(Veri) Step 2
Liste(1, i) = MinTarih + i - 3
Liste(1, i + 1) = MinTarih + i - 3
Liste(2, i) = "Giriş Kaydı"
Liste(2, i + 1) = "Çıkış Kaydı"
Next i
Liste(2, 1) = "PROJE"
Liste(2, 2) = "KULLANICI"
For i = 2 To UBound(Veri)
Liste(i + 1, 1) = Veri(i, 2)
Liste(i + 1, 2) = Veri(i, 5)
Say = (Veri(i, 7) - MinTarih) * 2 + InStr(1, Veri(i, 3), "Çıkış")
Liste(i + 1, Say + 3) = Veri(i, 8)
Next i
Sh2.Cells.ClearContents
Sh2.Range("A1").Resize(UBound(Liste, 1), UBound(Liste, 2)) = Liste
End Sub
Sub test()
Dim S1 As Worksheet, S2 As Worksheet, Son As Long, Say As Long
Dim i As Long, j As Integer, krt As String
Dim a(), b(), dc As Object, dt As Object, ds As Object, dz As Object
Set S1 = Worksheets("ANAVERİ")
Set S2 = Worksheets("ÖZET")
Son = S1.Range("B" & Rows.Count).End(3).Row
a = S1.Range("B1:H" & Son).Value
Set dc = CreateObject("scripting.dictionary")
Set dt = CreateObject("scripting.dictionary")
Set ds = CreateObject("scripting.dictionary")
Set dz = CreateObject("scripting.dictionary")
For i = 2 To UBound(a)
dc(a(i, 1) & "|" & a(i, 4)) = ""
dt(a(i, 6)) = ""
ds(a(i, 2)) = ""
krt = a(i, 1) & "|" & a(i, 4) & "|" & a(i, 6) & "|" & a(i, 2)
dz(krt) = a(i, 7)
Next i
ReDim b(1 To dc.Count + 2, 1 To (dt.Count * 2) + 2)
b(2, 1) = "PROJE"
b(2, 2) = "KULLANICI"
For j = 0 To dt.Count - 1
b(1, (j * 2) + 3) = dt.keys()(j)
b(1, (j * 2) + 4) = dt.keys()(j)
b(2, (j * 2) + 3) = "Giriş Kaydı"
b(2, (j * 2) + 4) = "Çıkış Kaydı"
Next j
Say = 2
For i = 0 To dc.Count - 1
Say = Say + 1
b(Say, 1) = Split(dc.keys()(i), "|")(0)
b(Say, 2) = Split(dc.keys()(i), "|")(1)
For j = 1 To (dt.Count * 2)
krt = dc.keys()(i) & "|" & b(1, j + 2) & "|" & b(2, j + 2)
If dz.exists(krt) Then
b(Say, j + 2) = dz(krt)
End If
Next j
Next i
S2.Cells.ClearContents
S2.[A1].Resize(Say, (dt.Count * 2) + 2) = b
S2.[C3].Resize(Say, (dt.Count * 2)).NumberFormat = "hh:mm"
S2.[C1].Resize(, (dt.Count * 2)).NumberFormat = "dd.mm.yyyy"
MsgBox "İşlem tamam...", vbInformation
End Sub