Predmet:Re: Kako da obrisem redove sa markiranim celijama
evo stigo zxz jer nije mogao vise mene da doceka.
Meni je bilo ovo tesko.
ajmo jos ovako pa da vidimo
metodom staviti kod u modul1 stavi ovo:
PreuzmiIzvorni kôd (Text):Sub duplikati()
If obojiDuplikate = True Then
If obrisiDuplikate = False Then
MsgBox "GRESKA! u brisanju duplikata"
Stop
End If
Else
MsgBox "GRESKA! u bojanju duplikata"
Stop
End If
End Sub
Function obojiDuplikate() As Boolean
obojiDuplikate = False
Dim LLoop As Integer
Dim LTestLoop As Integer
Dim LClearRange As String
Dim Lrows As Integer
Dim Lcol As Integer
Dim LRange As String
'A kolona, vrijednosti
Dim LChangedValue As String
Dim LTestValue As String
'B kolona vrijednosti
Dim LChangedValueB As String
Dim LTestValueB As String
'Lrows=zadnjiRed
With ActiveSheet
Lrows = .Cells(Rows.count, "A").End(xlUp).Row
Lcol = .Cells(1, Columns.count).End(xlToLeft).Column
End With
LLoop = 2
'obrisi boje ispune
LClearRange = "A2:B" & Lrows
Range(LClearRange).Interior.ColorIndex = xlNone
'provjeri sve redove
While LLoop <= Lrows
LChangedValue = "A" & CStr(LLoop)
LChangedValueB = "B" & CStr(LLoop)
If Len(Range(LChangedValue).Value) > 0 Then
'Nadi jedinstvenu vrijednost
LTestLoop = 2
While LTestLoop <= Lrows
If LLoop <> LTestLoop Then
LTestValue = "A" & CStr(LTestLoop)
LTestValueB = "B" & CStr(LTestLoop)
'vrijednost je duplikat u drugoj celiji
If (Range(LChangedValue).Value = Range(LTestValue).Value) And (Range(LChangedValueB).Value = Range(LTestValueB).Value) Then
'postavi crvenu boju pozadine u A stupcu
Range(LChangedValue).Interior.ColorIndex = 3
Range(LTestValue).Interior.ColorIndex = 3
'postavi crvenu boju pozadine u B stupcu
'ovo netreba
Range(LChangedValueB).Interior.ColorIndex = 3
Range(LTestValueB).Interior.ColorIndex = 3
End If
End If
LTestLoop = LTestLoop + 1
Wend
End If
LLoop = LLoop + 1
Wend
obojiDuplikate = True
End Function
Function obrisiDuplikate() As Boolean
obrisiDuplikate = False
Dim rCell As Range
Dim rRange As Range
Dim lCount As Long
Set rRange = Range("A1", Range("A" & Rows.count).End(xlUp))
lCount = rRange.Rows.count
For lCount = lCount To 1 Step -1
With rRange.Cells(lCount, 1)
If WorksheetFunction.CountIf(rRange, .Value) > 1 Then
.EntireRow.Delete
End If
End With
Next lCount
obrisiDuplikate = True
End Function
metodom dodijeli kod dugmetu (kao sto sam prije rekao i objasnio), dodijeli mu makronaredbu imena : duplikati.
sada kada kliknes na dugme kod poziva funkciju koja oboji sve duplikate, a zatim se pozove funkcija obrisi duplikate, stime da ostane obojen jedan duplikat.
evo i excel primjer sa vocem.
Napomena : trebao si nam odmah na pocetku reci da si trazio duplikate metodom uvjetnog oblikovanja. Mislim da vba nemoze dijelovati na uvjetno oblikovanje ili moze...
Prilozi:
avko_01.rar
Preuzimanja:171
Velicina datoteke:18.08 KB
zivot je moja domovina.
Ovaj post je ureden
1
puta. Posljednja izmjena 13.01.2019 16:09 od strane Avko.