unieke datums

Status
Niet open voor verdere reacties.

excelkees

Gebruiker
Lid geworden
7 sep 2010
Berichten
155
Hi, ik heb een lange lijst (2000 regels) met veel dezelfde datums, ik wil echter uit deze lijst een nieuwe lijst met alleen de unieke datums, is er iemand die me kan helpen, alvast bedankt Kees
 
Code:
Sub Uniek()
  sq = Cells(1, 1).CurrentRegion
  For Each cl In sq
    If InStr(c01, cl) = 0 Then c01 = c01 & "|" & cl
  Next
  Cells(1, 2).Resize(UBound(Split(c01, "|"))) = Application.Transpose(Split(Mid(c01, 2), "|"))
End Sub
 
Je hebt hiervoor geen VBA nodig,.. Gebruik een uitgebreid filter.

Excel 2003: Data > Filter > uitgebreid filter
Excel 2007: Gegevens > geavanceerd (in het vak Sorteren en filteren)

Vink de optie alleen unieke records aan, en kies voor "Kopieeren naar een andere locatie"
de rest zal voor zich wijzen.
 
Hoi, dank voor het antwoord maar ik ben op zoek naar een formule (cel - lijst) op een 2e sheet (1e sheet staan de data die steeds veranderen
dank voor jullie reactie
Kees
 
Waarom plaats je je vraag dan in de VBA-sectie van dit forum ?
Of bedoel je enkel dat je het resultaat op een ander werkblad wil ?
Code:
Sub Uniek()
  sq = Sheets(1).Cells(1, 1).CurrentRegion
  For Each cl In sq
    If InStr(c01, cl) = 0 Then c01 = c01 & "|" & cl
  Next
  Sheets(2).Cells(1, 1).Resize(UBound(Split(c01, "|"))) = Application.Transpose(Split(Mid(c01, 2), "|"))
End Sub
 
Laatst bewerkt:
Warme bakkertje, je hebt gelijk en je antwoord is meer dan uitstekend en zeker te gebruiken, maar ik realiseerde me te laat dat het inderdaad op een andere sheet moest (verdere wens is: niet in de rij maar in de kolom nl rij 1 en alleen de nieuwe data),

het is mijn voorkeur om eerst vba (maar ben echt een junior!) ipv een formule in een cel maar als dat laatste kan dacht ik dan is dat ook prima

Warme bakkertje, ik zie je regelmatig helpen, mijn compliment met je uitstekende reacties!

alweer mijn dank Kees
 
Mijn nederige dank voor uw lofbetuigingen, maar ik denk dat we deze mogen toewijzen aan alle helpers hier die hun vrije tijd besteden aan het delen van hun kennis met anderen en het zoeken naar oplossingen de onmogelijkste dingen eerst. :thumb:
Als ik je verdere wens goed begrijp wil je de unieke data in A1, B1, .....enz
Code:
Sub Uniek()
  sq = Sheets(1).Cells(1, 1).CurrentRegion
  For Each cl In sq
    If InStr(c01, cl) = 0 Then c01 = c01 & "|" & cl
  Next
  Sheets(2).Cells(1, 1).Resize(, UBound(Split(c01, "|"))) = Split(Mid(c01, 2), "|")
End Sub
 
Warme bakkertje, wat kan het toch mooi zijn als het werkt, nogmaals mijn compliment met je uitstekende reactie!

alweer mijn dank Kees

ps om eea te begrijpen kun je me in het kort uitleggen hoe "If InStr(c01, cl) = 0 Then c01 = c01 & "|" & cl "werkt
 
Uit VBA-Help: InStr-functie
Geeft als resultaat een Variant (Long) met de positie waarop een tekenreeks de eerste keer voorkomt in een andere tekenreeks.
Hiermee bouw je de matrix (reeks) op met unieke nummers. Als deze Variant 0 is betekent dit dat de waarde nog niet voorkomt in de reeks en wordt ze met c01 = c01 & "|" & cl aan de reeks met als naam c0 toegevoegd met als scheidingsteken | zodat ze als afzonderlijke getallen beschouwd worden. Je bouwt dus een reeks op getal|getal| ...enz. Met de functie Split worden al deze getallen daarna terug gescheiden om ze te kunnen verdelen over rijen of kolommen
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan