• DİKKAT

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

d,e,f sutunudaki veriler aynı olursa başka sayfaya yazsın

Katılım
23 Ocak 2011
Mesajlar
293
Excel Vers. ve Dili
2007 excel
Slm,
D sutununda tarih,E sutununda saat ve F Sutunda öğrenci ismi aynı olan verileri kontrol sayfasına nasıl yazdıra bilirim.
Örnek olarak
02.07.2012 08.00-08.45 mahmut özdemir
02.07.2012 08.00-08.45 mahmut özdemir
 

Ekli dosyalar

Merhaba, alttaki kodları gerçek verilerle deneyin ama bir yedeğini mutlaka alın.

Kod:
Sub prmts()
SAY = 1
For i = 2 To Range("a65536").End(3).Row
Range("ee" & i).Value = Cells(i, 4).Value & Cells(i, 5).Value & Cells(i, 6).Value
Next i
For K = Range("a65536").End(3).Row To 2 Step -1
If WorksheetFunction.CountIf(Range("eE:eE"), Range("ee" & K).Value) > 1 Then
SAY = SAY + 1
Sheets("KONTROL").Range("A" & SAY).Value = Cells(K, 4).Value
Sheets("KONTROL").Range("B" & SAY).Value = Cells(K, 5).Value
Sheets("KONTROL").Range("C" & SAY).Value = Cells(K, 6).Value
End If
Range("ee" & K).Value = ""
Next K
End Sub
 
Merhaba,

Neden aynı veri 1 den fazla yazdırılıyor? tek yazdırılsa olmaz mı?
 
Onu bende düşündüm Necdet bey örnekte öyle istendiği için kodu o şekilde yazdım. Aslında benzersiz bir liste bile yapılabilir.
 
Onu bende düşündüm Necdet bey örnekte öyle istendiği için kodu o şekilde yazdım. Aslında benzersiz bir liste bile yapılabilir.

Evet tabi, üstelik böyle bir liste oluşturmak için baya bir süre gereebilir. Dosyanın boyutana bağlı olarak.
 
ilginiz için teşekürler
tabiki tekde olabilir...

Tek olursa alternatif olsun.

KONTROL sayfasında D sütununa kaç kere tekrarlandığını da yazar.

Kod:
Sub Ayni_Olanlar()
    Dim i   As Long, _
        j   As Long, _
        Deg As Variant, _
        s2  As Worksheet, _
        sk  As Worksheet, _
        a1, _
        a2, _
        d, _
        s
        
    Set s2 = Sheets("Sayfa2")
    Set sk = Sheets("KONTROL")
    
    s2.Select
    j = sk.Cells(Rows.Count, "A").End(3).Row
    If j < 2 Then j = 2
    sk.Range("A2:D" & j).ClearContents
    j = 1
    Set d = CreateObject("Scripting.Dictionary")
    
    For i = 2 To Cells(Rows.Count, "A").End(3).Row
        Deg = Cells(i, "D") & "|" & Cells(i, "E") & "|" & Trim(Cells(i, "F"))
        If Not d.exists(Deg) Then
            d.Add Deg, 1
        Else
            d.Item(Deg) = d.Item(Deg) + 1
        End If
    Next i
    
    a1 = d.keys
    a2 = d.items
    
    For i = 0 To d.Count - 1
        If a2(i) > 1 Then
            s = Split(a1(i), "|")
            j = j + 1
            sk.Cells(j, "A") = s(0)
            sk.Cells(j, "B") = s(1)
            sk.Cells(j, "C") = s(2)
            sk.Cells(j, "D") = a2(i)
        End If
    Next i
    
End Sub
 
Necdet beyin kastettiğini şimdi anladım. ;)

Kod:
Sub prmts()
Dim i As Long, dfg As Long, k As Long
For i = 2 To Range("a65536").End(3).Row
If WorksheetFunction.CountIf(Range("eE:eE"), Cells(i, 4).Value & Cells(i, 5).Value & Cells(i, 6).Value) > 0 Then
Else
dfg = dfg + 1
Range("ee" & dfg).Value = i
End If
Next i
For k = 2 To Range("ee65536").End(3).Row
Sheets("KONTROL").Range("A" & k).Value = Cells(Cells(k, "ee").Value, 4).Value
Sheets("KONTROL").Range("B" & k).Value = Cells(Cells(k, "ee").Value, 5).Value
Sheets("KONTROL").Range("C" & k).Value = Cells(Cells(k, "ee").Value, 6).Value
Range("ee" & k).Value = ""
Next k
End Sub
Daha kısa, hızlı olması gerektiği gibi.
 
Bu listede tüm öğrencilerin hangi tarihte hangi saaate ders aldıgı göstermektedir.Bir öğrenci aynı tarihte ve saate iki yerde olamayacagı için bu çakışmayı tesbit etmek istiyorum.Bu nedenle aynı tarih ve saatte, aynı kişilerin çakışmasını bulmalıyım... Bu kodları denedim olmadı.
 
Son düzenleme:
Kodları deneyerek gönderdim.

Eğer siz buraya eklediğiniz örnek dosyada denediyseniz onda başarılı olamazsınız. Çünkü adlarını hep 0 geçmişsiniz.

Örnek dosyanızı inceleyiniz.
 

Ekli dosyalar

Teşekkür ederim ellerinize sağlık...Bu kodu düğmeye basmadan otomatik olarak yaptırabilirmiyiz.
 
Son düzenleme:
Geri
Üst