• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Sorterings probleem

  • Onderwerp starter Onderwerp starter AatB
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

AatB

Gebruiker
Lid geworden
15 dec 2007
Berichten
257
Geacht forum,

ik heb een probleem met de sortering van een tabel;

De linker tabel is gesorteerd op datum. Dat is makkelijk.

Het gaat uiteraard over de rechter tabel.
De rechter tabel is gesorteerd op datum (leidend), waarbij de regels met dezelfde linkwaarde bij elkaar gehouden moeten worden.

Weet u een oplossing hoe ik dit moet doen?

mvg,

Aat
 

Bijlagen

Laatst bewerkt:
Zoiets als in voorbeeld?
Als het zo goed staat, geef ik daarna wel de uitleg.
 

Bijlagen

Zoiets als in voorbeeld?
Als het zo goed staat, geef ik daarna wel de uitleg.

Hoi Harry,

De rechter tabel was al het eindresultaat.
Ik zoek dus een macro om dit te bereiken.

mvg,

Aat
 
Zoiets misschien.

Helaas.....

De linker tabel in mijn sheet is de begin situatie.
De rechter tabel in mijn sheet is de gewenste eind situatie.

Bij de sortering moet de oudste datum bovenaan staan.
De linkwaarde doe zelf niet mee met de sortering, maar dient er voor om de rijen met dezelfde link bij elkaar krijgen.

mvg,

Aat
 
Hoi Aat,

Ik weet niet of het je op is gevallen, maar ik had het bestandje aangepast op 19:01 uur.
10-04-09 Sortering (2), misschien heb jij net in de tussentijd naar (1) gekeken.

Anders iemand anders.
 
Hoi Aat,

Ik weet niet of het je op is gevallen, maar ik had het bestandje aangepast op 19:01 uur.
10-04-09 Sortering (2), misschien heb jij net in de tussentijd naar (1) gekeken.

Anders iemand anders.

Hoi Harry,

je had gelijk, ik had het verkeerd bestand.....

Maar het klopt nog niet. Jij neemt de Link mee in je sortering. Dat kan niet, want dan klopt de datum volgorde niet meer. Verander de eerste t maar in een g. Het rechter rijtje zou nu met de g link (hier zit nl nu de vroegste datum in).
Het is dus de bedoeling dat de link met de vroegste datum eerst komt, dan de volgende link met de vroegste datum, etc...

mvg,

Aat
 
Bij deze op 4 manieren van oud naar nieuw en visa versa ook van A naar Z en vica versa
 

Bijlagen

Bij deze op 4 manieren van oud naar nieuw en visa versa ook van A naar Z en vica versa

Hoi Daniel,

1 - In de tabel moet eerst bepaald worden wat de vroegste datum is.
2 - Deze komt op de eerste rij.
3 - Dan in de tabel kijken of er rijen zijn met dezelfde link
4 - Deze moeten dan in de volgorde van datum op opeenvolgende rijen geplaatst worden.
5 - Daarna van de overgebleven rijen weer de vroegste datum bepalen
6 - Die komt dan onder de eerst reeks
3 - Dan in de tabel kijken of er rijen zijn met dezelfde link
4 - Deze moeten dan in de volgorde van datum op opeenvolgende rijen geplaatst worden.
5 - Daarna van de overgebleven rijen weer de vroegste datum bepalen
etc....

mvg,

Aat
 
Hoi Daniël,

correct, maar dan wel onder elkaar.....

mvg,

Aat

Beste Aat vandaar mijn handmatig voorbeeldje soms lezen we niet wat een ander zijn wil is .
Code:
4 - Deze moeten dan in de volgorde van datum op opeenvolgende rijen geplaatst worden.
deze had ik mis begrepen .
Ik vermoed dat dit kan opgelost worden VERT.ZOEKEN ?? Matrix for ??
 
Beste Aat vandaar mijn handmatig voorbeeldje soms lezen we niet wat een ander zijn wil is .
Code:
4 - Deze moeten dan in de volgorde van datum op opeenvolgende rijen geplaatst worden.
deze had ik mis begrepen .
Ik vermoed dat dit kan opgelost worden VERT.ZOEKEN ?? Matrix for ??

Geen idee hoe ik dit moet doen.....
 
Helaas moet ik jullie teleurstellen Daniël en Aat
Ik kom niet verder als dit voorbeeldje.

Je zult waarschijnlijk nog met meerdere hupkolommen tot een resultaat moeten komen.
Je moet switchen van kleinste datum naar letter, en vice versa.

Misschien is dit te doen in VBA.
i.i.g. succes.
 

Bijlagen

Aat,

Zoals HSV al melde kan het met VBA opgelost worden.

Kijk eens naar bijgevoegd voorbeeld of dit is wat je bedoelt.

Grtz.
 

Bijlagen

Aat,

Zoals HSV al melde kan het met VBA opgelost worden.

Kijk eens naar bijgevoegd voorbeeld of dit is wat je bedoelt.

Grtz.

Hi Superzeeuw....

Het komt aardig dicht in de buurt....
Ik kan hier wel verder mee.

Bedankt iedereen voor jullie input.

Groeten,

Aat
 
Het kan via (matrix)formules en het gebruik van 2 hulpkolommen. Zie voorbeeld.
 

Bijlagen

Hi Finch,

ik ben verder gegaan met de VBA oplossing van Superzeeuw....
en heb een hulpkolom ingebouwd.

Aan de code zal denk ik nog wel wat verbeterd kunnen worden, maar het werkt wel.

Bedankt in ieder geval voor de tijd die je er in gestoken hebt.

mvg,

Aat


Code:
Sub sorteren()
    
    Application.ScreenUpdating = False
    
    Range("C4:C500").ClearContents
    Range("H4:J500").ClearContents
    
    For Each r In Worksheets(1).Range("A3:A500")
        If r = "" Then
            Range("A3").CurrentRegion.Copy
            Range("H3").PasteSpecial

            Application.CutCopyMode = False
            Selection.Sort Key1:=Range("J4"), Order1:=xlAscending, Header:=xlGuess, _
                OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
                DataOption1:=xlSortNormal
            
            Range("A1").Select
            
            Application.ScreenUpdating = False
            Exit Sub
        End If
        
        Set c = Worksheets(1).Range("A3:A500").Find(r.Value, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then
            firstAddress = c.Address
            n = n + 1
            If c.Offset(0, 2) = "" Then c.Offset(0, 2) = n
            
            Do
                Set c = Worksheets(1).Range("A3:A500").FindNext(c)
                n = n + 1
                If c.Offset(0, 2) = "" Then c.Offset(0, 2) = n
            Loop While Not c Is Nothing And c.Address <> firstAddress
           
        End If
    Next
    Application.ScreenUpdating = True

End Sub
 

Bijlagen

Het kan eenvoudiger:
Code:
Sub tst()
  On Error GoTo XL90
  With Range("A3").CurrentRegion
    Cells(.Rows.Count + 4, 5) = " "
    .Offset(1).Sort [A4], , [B4]
    Do
      .AutoFilter 1, .Cells(WorksheetFunction.Match(WorksheetFunction.Small(.Columns(2), 1), .Columns(2), 0), 1).Value
      .Offset(IIf(.SpecialCells(12).Cells(1) = "Link", 1, 0)).SpecialCells(12).Copy Cells(Rows.Count, 5).End(xlUp).Offset(1)
      .Offset(IIf(.SpecialCells(12).Cells(1) = "Link", 1, 0)).SpecialCells(12).ClearContents
      .AutoFilter
    Loop
  End With
XL90:
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan