Farklı Bir Mükerrer Kontrolü.

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Belli bir aralıktaki verilerin başka bir aralıkta tekrar edip etmediğini kontrol edebilir miyiz? Yanlış anlaşılmasın, hücre kontrolü değil; blok halinde kontrol yapacak.
Açıklama ekte...
Saygılar...
 

Ekli dosyalar

Son düzenleme:

Mahmut Kök

Özel Üye
Katılım
14 Temmuz 2006
Mesajlar
878
Excel Vers. ve Dili
Excel 2007 - Türkçe
Selamlar,
Belli bir aralıktaki verilerin başka bir aralıkta tekrar edip etmediğini kontrol edebilir miyiz? Yanlış anlaşılmasın, hücre kontrolü değil; blok halinde kontrol yapacak.
Açıklama ekte...
Saygılar...

Doğrudan blok haline denetlemiyor ama aşağıdaki kod ile hücreler birebir karşılaştırılıyor. A sütunu ile C sütununu karşılaştıran örnek fikir verebilir.

Kod:
Sub karşılaştır()
For a = 1 To 10
If Cells(a, "[COLOR=red]a[/COLOR]") <> Cells(a, "[COLOR=red]c[/COLOR]") Then
MsgBox "AYNI DEĞİL"
Exit Sub
End If
Next
MsgBox "aynı"
End Sub
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Bir alternatif de şöyle olabilir :

Aşağıdakileri, Standart bir modül sayfasına kopyalayıp çalıştırınız.

Kod:
Sub Farklı_Sutunlari_Goster()
 
    Dim arrEsas() As Variant
    Dim arrDigr() As Variant
    Dim sEsas As String
    Dim sDigr As String
    Dim j As Integer
 
    sEsas = String_Olustur(1, arrEsas())
 
    For j = 2 To Cells(1, 256).End(xlToLeft).Column
 
        sDigr = String_Olustur(j, arrDigr())
 
        If StrComp(sEsas, sDigr, vbTextCompare) = 0 Then
            MsgBox "1.sütun ve " & j & ".sütun birbiri ile aynı ...", _
                        vbInformation, _
                            "Bilgilendirme"
        End If
 
    Next j
 
    Erase arrEsas:    Erase arrDigr
 
End Sub
[COLOR=darkgreen]'----------------------------------------------[/COLOR] 
Private Function String_Olustur(iSutn As Integer, arrDizi() As Variant) As String
    Dim i As Integer
 
    ReDim arrDizi(1 To Cells(65536, iSutn).End(xlUp).Row)
 
    For i = 1 To UBound(arrDizi)
        arrDizi(i) = Cells(i, iSutn)
    Next i
 
    String_Olustur = Join(arrDizi, ""),
 
End Function
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,741
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. ersoyalan,

Ferhat beyin önerdiği kodda en alttan ikinci satırdaki son kısımdaki virgülü silerseniz hata düzelecektir.

Kod:
String_Olustur = Join(arrDizi, "")[B][COLOR=red],[/COLOR][/B]
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,741
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Alternatif olarak aşağıdaki koduda kullanabilirsiniz.

Kod:
Option Explicit
 
Sub MÜKERRER_SÜTUN_KONTROLÜ()
    Dim İLK As Date, SON As Date, SÜRE As Date
    Dim İLK_DİZİ As String, YENİ_DİZİ As String
    Dim X As Long, Y As Byte, Z As Long
    Dim SÜTUN As String
 
    İLK = Time
    For X = 1 To [A65536].End(3).Row
        İLK_DİZİ = İLK_DİZİ & Cells(X, 1)
    Next
 
    For Y = 2 To [IV1].End(1).Column
        For Z = 1 To Cells(65536, Y).End(3).Row
            YENİ_DİZİ = YENİ_DİZİ & Cells(Z, Y)
        Next
            If İLK_DİZİ = YENİ_DİZİ Then
                SÜTUN = IIf(SÜTUN = Empty, Y & ".", SÜTUN & " - " & Y & ".")
            End If
        YENİ_DİZİ = Empty
    Next
    SON = Time
    SÜRE = Format((SON - İLK), "hh:mm:ss")
    If SÜTUN = Empty Then
    MsgBox "Mükerrer kayıt bulunamamıştır !" & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    ElseIf InStr(1, SÜTUN, "-") > 0 Then
    MsgBox SÜTUN & "  sütunlar mükerrer kayıt edilmiştir." & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    Else
    MsgBox SÜTUN & ". sütun mükerrer kayıt edilmiştir." & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    End If
End Sub
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Arkadaşlar, hepinize ayrı ayrı teşekkür ederim. Ellerinize sağlık...
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Arkadaşlar, bu tamam...
Bir de "A" sütununa göre değilde, tüm alana göre bir kod yazabilir miyiz? Yani belirtilen alanda herhangi iki sütunda veyafazlasında benzerlik varsa uyarı verebilir mi?
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Korhan hocam merhaba,

3-4-5 stun yerine c-d-e stunlar diye adlandırabilirmisiniz.Kontrol ettiğimiz stunların oldukça fazla olduğunu düşünürsek kangisinin kaçıncı stun olduğu bulmak zor olur.Hatta farklı olan mükerrer olmayan stunları renkliyebilirmisiniz.

E.ALAN
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,741
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Sn. ersoyalan,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub MÜKERRER_SÜTUN_KONTROLÜ()
    Dim İLK As Date, SON As Date, SÜRE As Date
    Dim İLK_DİZİ As String, YENİ_DİZİ As String
    Dim X As Long, Y As Byte, Z As Long
    Dim SÜTUN As String
 
    İLK = Time
    
    Cells.Interior.ColorIndex = xlNone
    
    For X = 1 To [A65536].End(3).Row
        İLK_DİZİ = İLK_DİZİ & Cells(X, 1)
    Next
 
    For Y = 2 To [IV1].End(1).Column
        For Z = 1 To Cells(65536, Y).End(3).Row
            YENİ_DİZİ = YENİ_DİZİ & Cells(Z, Y)
        Next
            If İLK_DİZİ = YENİ_DİZİ Then
                If SÜTUN = Empty Then
                   SÜTUN = Cells(1, Y).Address(0, 0)
                   Else
                   SÜTUN = SÜTUN & " - " & Cells(1, Y).Address(0, 0)
                End If
                SÜTUN = SÜTUN_HARFİ_AYIR(SÜTUN)
                Else
                Columns(Y).Interior.ColorIndex = 8
            End If
        YENİ_DİZİ = Empty
    Next
    
    SON = Time
    
    SÜRE = Format((SON - İLK), "hh:mm:ss")
    
    If SÜTUN = Empty Then
        MsgBox "Mükerrer kayıt bulunamamıştır !" & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    ElseIf InStr(1, SÜTUN, "-") > 0 Then
        MsgBox SÜTUN & "  sütunları mükerrer kayıt edilmiştir." & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    Else
        MsgBox SÜTUN & ". sütun mükerrer kayıt edilmiştir." & vbCrLf & "İşlem süresi  ; " & SÜRE, vbCritical
    End If
End Sub
 
Function SÜTUN_HARFİ_AYIR(SÜTUN As String) As String
    Dim RAKAM() As Variant, X As Integer
    
    RAKAM = Array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9")
    
    For X = 0 To UBound(RAKAM)
        If InStr(1, SÜTUN, RAKAM(X)) > 0 Then
        SÜTUN_HARFİ_AYIR = Replace(SÜTUN, RAKAM(X), "")
        Exit For
        End If
    Next
End Function
 
Katılım
10 Nisan 2008
Mesajlar
578
Excel Vers. ve Dili
2000,2003,2007
Korhan hocam merhaba,

Kod mükemmel çalışıyor çok teşekkürederim.

Syg,

E.ALAN
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Bir de "A" sütununa göre değilde, tüm alana göre bir kod yazabilir miyiz? Yani belirtilen alanda herhangi iki sütunda veya fazlasında benzerlik varsa uyarı verebilir mi?
 
Üst