Gelmeyenleri karşılaştırıp listeleme

Katılım
13 Mart 2019
Mesajlar
2
Excel Vers. ve Dili
2010 Türkçe
Merhaba arkadaşlar;

Turnikeden sabah giriş yapan öğrencilerin dökümünü data sekmesindeki gibi alıyorum. Buradaki isimlerden 09:05 ten sonra giriş yapanların genel liste (LİSTE1) den kontrolü yapılarak giriş yapmayanların gelmeyenler sekmesinde listelenmesini istiyorum.

DÜŞEYARA kullanarak çok uğraştım,ancak başaramadım. Yardımcı olursanız çok sevinirim.

İyi çalışmalar.


https://dosya.co/r4vldmvv4ktr/TURNİKE.xlsx.html
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Buradaki isimlerden 09:05 ten sonra giriş yapanların genel liste (LİSTE1) den kontrolü yapılarak giriş yapmayanların gelmeyenler sekmesinde listelenmesini istiyorum.
Merhaba,
Yukarıdaki bölümü anlayamadım. 9.05'ten sonra giriş yapanlar mı listelenecek yoksa hiç giriş yapmayanlar mı? Yada daha farklı bir şey mi istiyorsunuz.
 
Katılım
13 Mart 2019
Mesajlar
2
Excel Vers. ve Dili
2010 Türkçe
Listelenecek kayıtlar, 09:05 ten sonra giriş yapanlar ve hiç giriş yapmayanlar.
09:05 e kadar giriş yapanlar gelmiş sayılıyor.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Aşağıdaki kodu kullanabilirsiniz.

Kod, LİSTE1 sayfasındaki verilerin tümünü gelmeyenler sayfasına alır, data sayfasındaki saatler 09:05 ve öncesinde ise bunların satırları silinir.
Böylece gelmeyenler isimli sayfada sadece, 09:05'ten sonra gelmiş olanlar ve hiç gelmeyenler kalır.
CSS:
Sub GECIKEN_GELMEYEN()
Set liste = Sheets("LİSTE1"): Set d = Sheets("data"): Set g = Sheets("gelmeyenler")
If g.Cells(Rows.Count, 1).End(3).Row > 1 Then g.Range("A2:D" & Rows.Count).ClearContents
ds = d.Cells(Rows.Count, 1).End(3).Row: ls = liste.Cells(Rows.Count, 1).End(3).Row:
gs = g.Cells(Rows.Count, 1).End(3).Row + 1
liste.Range("A2:C" & ls).Copy g.Cells(gs, 1): liste.Range("M2:M" & ls).Copy g.Cells(gs, 4)
For s = 2 To ds
    If TimeValue(d.Cells(s, 1)) <= TimeValue("09:05") Then
        gs = WorksheetFunction.Match(d.Cells(s, 2), g.[A:A], 0)
        g.Range("A" & gs & ":D" & gs).Delete Shift:=xlUp
    End If
Next: g.Range("A2:D" & ls).Sort g.[A1], 1: g.Columns.AutoFit
MsgBox "işlem tamamlandı...", vbInformation, "..:: Ömer BARAN ::.."
End Sub
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,800
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Alternatif kod:

PHP:
Sub deneme1()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Sheets("gelmeyenler").Range("A2:D" & Rows.Count).ClearContents

son = Worksheets("LİSTE1").Cells(Rows.Count, "A").End(3).Row

ReDim veri1(son)
baslangıc = CDate("09:05")


sat = 2
say1 = 0
For r = 2 To Worksheets("data").Cells(Rows.Count, "B").End(3).Row
If baslangıc < CDate(Format(Sheets("data").Cells(r, "a").Value, "hh:nn")) Then
Sheets("gelmeyenler").Cells(sat, 1).Value = Sheets("data").Cells(r, "b").Value
Sheets("gelmeyenler").Cells(sat, 2).Value = Sheets("data").Cells(r, "c").Value
Sheets("gelmeyenler").Cells(sat, 3).Value = Sheets("data").Cells(r, "d").Value
Sheets("gelmeyenler").Cells(sat, 4).Value = CDate(Format(Sheets("data").Cells(r, "a").Value, "hh:nn:ss"))
Sheets("gelmeyenler").Cells(sat, 4).NumberFormat = "hh:mm:ss"
sat = sat + 1
End If

say1 = say1 + 1
veri1(say1) = Val(Sheets("data").Cells(r, "b").Value)
Next r

For i = 2 To Worksheets("LİSTE1").Cells(Rows.Count, "B").End(3).Row
aranan = Val(Sheets("LİSTE1").Cells(i, "a").Value)

For j = 1 To say1
If aranan = veri1(j) Then
GoTo atla
End If
Next j

Sheets("gelmeyenler").Cells(sat, 1).Value = Sheets("LİSTE1").Cells(i, "a").Value
Sheets("gelmeyenler").Cells(sat, 2).Value = Sheets("LİSTE1").Cells(i, "b").Value
Sheets("gelmeyenler").Cells(sat, 3).Value = Sheets("LİSTE1").Cells(i, "c").Value
Sheets("gelmeyenler").Cells(sat, 4).Value = Sheets("LİSTE1").Cells(i, "m").Value
Sheets("gelmeyenler").Cells(sat, 4).NumberFormat = "General"
sat = sat + 1
atla:

Next i

MsgBox "işlem tamam"
End Sub
 
Son düzenleme:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Aşağıdaki kodu bir deneyin.
Önce geç gelenleri sonra hiç gelmeyenleri yazdırır.
(Kodu dün yazmıştım ama siteye yükleyemedim. Cevaplar çoktan gelmiş, ama boşa gitmesin, alternatif olsun.)
PHP:
Sub kod()
Dim a As Integer, x As Integer
Dim L As Worksheet, D As Worksheet, G As Worksheet
Set L = Sheets("LİSTE1")
Set D = Sheets("data")
Set G = Sheets("gelmeyenler")
G.Range("A2:D" & Rows.Count).ClearContents
x = 2
For a = 2 To D.Cells(Rows.Count, 1).End(3).Row
    If TimeValue(D.Cells(a, 1)) > TimeValue("09:05:59") Then
        G.Cells(x, 1).Resize(, 3).Value = D.Cells(a, 2).Resize(, 3).Value
        G.Cells(x, 4) = L.Range("A:A").Find(D.Cells(a, 2), lookat:=xlWhole).Offset(0, 12).Value
        x = x + 1
    End If
Next
x = x + 1
For a = 2 To L.Cells(Rows.Count, 1).End(3).Row
    If WorksheetFunction.CountIf(D.Range("B:B"), L.Cells(a, 1)) = 0 Then
        G.Cells(x, 1).Resize(, 3).Value = L.Cells(a, 1).Resize(, 3).Value
        G.Cells(x, 4).Value = L.Cells(a, "M").Value
        x = x + 1
    End If
Next
MsgBox "İşlem tamam"
End Sub
 
Üst