Toon posts:

[XL 2003] Data in meerdere kolommen sorteren op één rij

Pagina: 1
Acties:

  • DouweEgberts
  • Registratie: November 2003
  • Laatst online: 05-06 13:46
Hé medetweakers,

Ik ben bezig met een excel spreadsheet die een aantal gegevens in het tabblad invoer automatisch converteert naar een tabel met opmaak die ik al heb.

Nu heb ik eindelijk alles werkend, alleen loop ik tegen één probleem aan.

Het werkblad ziet er als volgt uit:

NaamTijdTijdTijdNaamTijdTijdTijdNaamTijdTijdTijd
JanTijdTijdTijdJanTijdTijdTijdPietTijdTijdTijd
PietTijdTijdTijdPietTijdTijdTijdKeesTijdTijdTijd
KeesTijdTijdTijdHenkTijdTijdTijdHenkTijdTijdTijd
HenkTijdTijdTijdNaamTijdTijdTijdNaamTijdTijdTijd


Behalve de koppen Tijd is daaronder Tijd dus een tijdstip.

Zoals je ziet zijn het drie sets met dezelfde data naast elkaar. Echter de namen gaan op een gegeven moment verspringen.

Nu krijg ik het middels macro's en vba niet voor elkaar om alle data van Jan te laten beginnen op één lijn. Als volgt:

NaamTijdTijdTijdNaamTijdTijdTijdNaamTijdTijdTijd
JanTijdTijdTijdJanTijdTijdTijd
PietTijdTijdTijdPietTijdTijdTijdPietTijdTijdTijd
KeesTijdTijdTijd


Ik heb overal gezocht, gegoogled en nagedacht, maar ik kom niet tot een oplossing.

Iemand?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Dat kan zeker met een paar loopjes in een macro (en vast ook zondr, maar dat terzijde) worden gedaan: drie keer sorteren en dan voor elke naam in de eerste kolom, de tweede en derde langslopen. Waar loop je vast, wat is je huidige code?

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • DouweEgberts
  • Registratie: November 2003
  • Laatst online: 05-06 13:46
Ik loop vast bij het ontwerp. Ik hoef de code niet voorgekauwd te krijgen, maar ik kan geen routine verzinnen die dit doet.

Ik beheers VBA wel, alleen mijn ontwerpskills zijn niet toereikend :D

Anoniem: 113297

opsplitsen in deelproblemen, zodat je er beter zicht op krijgt.
- bewaar de oospronkelijke tabel als bronwaarde
- maak eerst een lijst met unieke namen (met 'uitgebreide filter', al dan niet omgezet in code).
deze unieke lijst herhaal je drie keer in de juiste kolom
- zoek in deze nieuwe tabel de bij de naam overeenstemmende tijdswaarde in de oude tabel mbv. vertikaal zoeken (formule vlookup of vert.zoeken)
bovenstaande deelstappen kan je geheel of gedeeltelijk automatiseren met vba.

  • DouweEgberts
  • Registratie: November 2003
  • Laatst online: 05-06 13:46
Ik denk dat ik mijn tabel beter moet omschrijven.

Ik heb een tabel met:

Naam # Date # Date # Date

Echter onder één naam, kan onder één kolom datum, meerdere tijden staan. Dus:
Naam # Date # Date # Date
-------------------------------------------
Naam # Tijd # Tijd # Tijd
.........# Tijd # Tijd # Tijd
........ # Tijd # ..... # Tijd
Naam # Tijd # Tijd # Tijd
.........# Tijd # Tijd # Tijd
........ # Tijd # ..... # Tijd

Dit zijn dus de verschillende tijden van 2 namen bij drie data.

Zo heb ik van alle namen, de tijden per 1 week en daar plak ik er vier van naast elkaar, dus:

Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd |
.........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd |
........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd |
Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd |
.........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd |
........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd |
Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd | Naam # Tijd # Tijd # Tijd |
.........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd | .........# Tijd # Tijd # Tijd |
........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd | ........ # Tijd # ..... # Tijd |

Elke naam komt per set van vier kolommen één keer voor. Echter naarmate de lijst langer wordt, komt niet elke keer dezelfde naam meer op één rij doordat niet iedereen op een datum dezelfde hoeveelheid tijden heeft staan.

Die uitlijning heb ik nodig voor de rest van mijn gecompliceerde vba script.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Hoe zou je dit op papier doen?

Ik zou trouwens juist de originele tabellen als uitgangspunt nemen. Dat lijkt me veel simpeler om te gebruiken omdat het al veel meer gestructureerd is?
0) reservekopie
1) Sorteer als nodig, dan per naam
1a) eerste tijd staat al goed
1b) tot er een nieuwe naam komt:
1b1) verplaats data naar de eerstvolgende lege kolommen bij de naam
1b2) volgende tijdenset
1c) volgende naam

Los hiervan: als je vooral met datamanipulatie bezig bent, wil je misschien helemaal geen Excel+VBA gebruiken, maar een tool dat er meer voor geschikt is zoals misschien een RDBMS.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Anoniem: 113297

in geval van meerdere tijden kan je geen vertikaal zoeken gebruiken (of toch niet op eenvoudige manier).

dan lijkt het me beter eerst te zoeken wie de meeste voorkomens heeft en daar de tabellayout op afstemmen, nog steeds rekening houden met een unieke lijst van namen.
daarna alle kolommen afzoeken (met vba in dit geval) om de overeenstemmende namen & tijden te matchen.

de rdbms-opmerking blijft relevant, maar bewaring van de specifieke layout is misschien belangrijk voor TS.
Pagina: 1


Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee