VBATools

Zaznacz duplikaty kolorami

by on Nov.17, 2011, under Excel, Porady

W większości przypadków z duplikatami mamy do czynienia w bazach danych, które to są agregowane w tabelach przestawnych lub są one importowane jako tabela rekordów.

Często też chcemy się ich pozbyć, o ile duplikat nic nie wnosi do obliczenia wartości jakie przedstawiają rekordy. Tym razem jednak chodzi o przydzielenie kolorów do każdego duplikatu (wielowystepowania) na zaznaczonym wcześniej obszarze. Procedura jest ograniczona do 56 podstawowej gamy kolorów arkuszowych (-2 dla białego i czarnego).


Sub zaznacz_duplikaty_kolorami_uwzg_przerwy()
Dim y&, x&, el As Range, zakres As Range, ile&
Set zakres = Selection
ile = zakres.Cells.Count
ReDim baza(1 To ile)
For Each el In zakres
x = x + 1
 el.Interior.ColorIndex = 0
 If Len(el.Value) = 0 Then baza(x) = "": GoTo przeskocz
 For y = 1 To UBound(baza)
  If baza(y) = el.Value Then
   el.Interior.ColorIndex = y + 2
   Cells(y, 1).Interior.ColorIndex = y + 2
   Exit For
  End If
 Next y
 baza(x) = el.Value
przeskocz:
Next el
Set zakres = Nothing
End Sub

Powyżej wynik na reprezentacyjnej próbce danych osadzonych w kolumnie “A”:

Sub zaznacz_duplikaty_kolorami(zakres As Range)
Dim Y&, X&, el As Range, Ile&, z&
With Application
 .ScreenUpdating = False
Ile = .WorksheetFunction.CountA(zakres.Cells)
End With
ReDim baza(1 To 2, 1 To Ile)
zakres.Cells.Interior.ColorIndex = 0
For Each el In zakres
 If Len(el.Value) = 0 Then GoTo przeskocz
  For Y = 1 To X
   If baza(1, Y) = el.Value Then
    If Y >= 56 Then z = Y + 2 - 56 * (Y \ 56) Else z = Y + 2
    If z > 56 Then z = 3
    el.Interior.ColorIndex = z
    Range(baza(2, Y)).Interior.ColorIndex = z
    GoTo przeskocz
   End If
  Next Y
 X = X + 1: baza(1, X) = el.Value: baza(2, X) = el.Address
przeskocz:
Next el
Application.ScreenUpdating = True
End Sub

Wynik dla obszarów bez względu na jego położenie z zapętleniem ograniczenia 56 kolorów (-2).

XL_Zaznacz_duplikaty_kolorami2

Rys.1 Przykład zastosowania kodu

(c) Shon Oskar – www.VBATools.pl

Wszelkie prawa zastrzeżone. Żadna część ani całość tego artykułu nie może być powielana ani publikowana bez zgody autora.

:, , ,

Leave a Reply

Recently Active Members

Profile picture of vbatools
Profile picture of Karol Stilger
Profile picture of Joanna Subik
Profile picture of Anorak
Profile picture of marcinmachalowski
Profile picture of programistaaccess
Profile picture of piotrpawlik
Profile picture of Emil Wasilewski
Profile picture of kicekpicek
Profile picture of coldfusion
Profile picture of Gosia Borzęcka
Profile picture of lukaszch
Profile picture of itadministracja
Profile picture of farbenia
Profile picture of Łukasz Kałużny
Profile picture of kabzinski
Profile picture of rtynski
Profile picture of leszekbetlinski
Profile picture of Iv
Profile picture of Justyna Spychała