[EXCEL] Unieke lijst generen

Pagina: 1
Acties:

  • deleenheir
  • Registratie: September 2003
  • Laatst online: 28-04-2024
Ik zit met het volgende probleem in excel:

graag zou ik automatisch een lijst met waarden een lijst met alle unieke waarden generen.

Hiervoor kan ik gebruik maken van de volgende macro (van het net geplukt):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Sub UniqueList()
Dim rListPaste As Range
Dim iReply As Integer

On Error Resume Next

Set rListPaste = Application.InputBox _
(Prompt:="Please select the destination cell", Type:=8)

    If rListPaste Is Nothing Then
       iReply = MsgBox("No range nominated," _
          & " terminate", vbYesNo + vbQuestion)
      If iReply = vbYes Then Exit Sub
    End If

'May need to specify [NameofSheet].Range, e.g, Sheet1.Range
   Range("A1", Range("A65536").End(xlUp)).AdvancedFilter _
   Action:=xlFilterCopy, CopyToRange:=rListPaste.Cells(1, 1), Unique:=True
End Sub


Maar als de lijst met unieken geupdate wordt zullen er verschuivingen plaatsvinden in de lijst waardoor achterliggende berekeningen niet meer kloppen. De nieuwe unieken zouden dus onderaan de lijst toegevoegd moeten worden.

Even praktisch:

beginsituatie:

lijst1:
banaan
banaan
appel
appel
peer
appel
banaan

dit moet volgende lijst met unieken genereren:
banaan
appel
peer

Even later wordt lijst1 aangepast naar:
banaan
banaan
appel
aardbei
appel
peer
appel
banaan

lijst2 moet dan aangepast worden naar
banaan
appel
peer
aardbei


en niet:
banaan
appel
aardbei
peer

"If it works, don't fix it"


Verwijderd

een beetje bizar, bij de eerste lijstgenerering doet de volgorde er niet toe, wat er daarna bij moet komen aan unieke items moet verplicht achteraan in de nieuwe lijst.

de beste oplossing lijkt dus de achterliggende berekeningen onafhankelijk te maken van de volgorde in de lijst. welke moeilijkheden kom je tegen als je dit alternatief kiest?

de minder goede oplossing zou er in kunnen bestaan de vorige lijst (lijst-1) eerst ergens anders weg te zetten, dan de nieuwe unieke lijst te genereren, deze vergelijken met lijst-1 en nieuwe items onderaan bijplaatsen.

  • deleenheir
  • Registratie: September 2003
  • Laatst online: 28-04-2024
Verwijderd schreef op zaterdag 22 maart 2008 @ 01:21:
een beetje bizar, bij de eerste lijstgenerering doet de volgorde er niet toe, wat er daarna bij moet komen aan unieke items moet verplicht achteraan in de nieuwe lijst.

de beste oplossing lijkt dus de achterliggende berekeningen onafhankelijk te maken van de volgorde in de lijst. welke moeilijkheden kom je tegen als je dit alternatief kiest?
Omdat na de eerste lijstgenerering er harde getallen en drop down list worden ingegeven/geselecteerd in de berekeningen achter de lijst. Het is dus lastig om die harde getallen mee te laten verplaatsen als er een nieuwe lijst gegenereerd wordt. Met een vlookup functie is dit mogelijk, maar dit wordt te omslachtig voor de mensen die de file moeten gebruiken.

De bedoeling van de sheet is dat er een soort gebryuiksvriendelijke en toch georganiseerde flatfile gemaakt wordt

[ Voor 8% gewijzigd door deleenheir op 25-03-2008 15:45 ]

"If it works, don't fix it"


Verwijderd

deleenheir schreef op dinsdag 25 maart 2008 @ 15:43:Met een vlookup functie is dit mogelijk, maar dit wordt te omslachtig voor de mensen die de file moeten gebruiken.
het is natuurlijk de bedoeling dat dit voor de gebruikers transparant blijft.
De bedoeling van de sheet is dat er een soort gebryuiksvriendelijke en toch georganiseerde flatfile gemaakt wordt
aan de slag dan met de "minder goede oplossing", post back if needed.

  • deleenheir
  • Registratie: September 2003
  • Laatst online: 28-04-2024
ik begrijp de werkwijze wel

1. oude lijst "bewaren"
2. nieuwe lijst genereren
3. oude lijst uit nieuwe lijst filteren
4. rest van nieuwe lijst onder oude lijst plakken

maar van VBA heb ik spijtig genoeg (nog) geen kaas gegeten, dus hoe ik dit moet vertalen is een misterie...

"If it works, don't fix it"


  • Witte
  • Registratie: Februari 2000
  • Laatst online: 13:25
Eigenlijk kan het niet, wat je wil.

Let op:

Start Situatie:
appel
appel
peer

Dit creeert lijst (uiteraard):
appel
peer


Daarna:
appel
aarbei
appel

Dit zou in jouw methodiek volgende lijst moeten creeeren:
appel
peer
aardbei

dit terwijl peer niet meer in de originele lijst staat!
wat je zou kunnen doen, is het tijdstip van toevoegen toevoegen in de eerste lijst, en de volgorde van de gecreeerde lijst op basis van (eerste) tijdstip creeeren. In access kan je dit met een eenvoudige group-by query zo fixen. In excel zal je met vba aan de slag moeten.

Houdoe

Pagina: 1