csv Log vraagje

Gewoon even offtopic praten over van alles en nog wat.

Moderator: Moderators

Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Tis weer maandag... :-) moet er altijd weer ff in komen....

Vond het wel leuk in jouw verzamelblad, dat de bovenste regel "vast" staat.... dacht dat ga ik bij mij ook ff doen...
maar wil nog niet helemaal lukken....

ja ik ben gek op boeken....
alleen ik ben eigenlijk altijd met teveel tegelijk bezig....

CNC,Electronica, programmeren... en dan vind ik solidworks leuk... En Blender... en PowerMill... en en en... en tis allemaal van die zooi wat niet vanzelf gaat... :-)
er zit te weinig tijd in een dag....
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

HIer na wil ik nog 1 slag er in maken, dat hij op het verzameleblad nog een keer alle regels af gaan... en als er een dubble datum/tijd in de lijst staat, hij er 1 regel van maakt....
Het gaat om flink veel rijen met gegevens in jouw geval. Als je de zaak gaat manipuleren op een werkblad (knippen/plakken/rijen verwijderen/rijen toevoegen, enzovoort) dan zal dat misschien veel tijd kosten.
Ik heb de indruk dat VBA een stuk trager is dan de ingebouwde functionaliteit van Excel zèlf. Daarom probeer ik daar zo veel mogelijk gebruik van te maken.

Ik geloof dat ik in jouw geval zou proberen om gegevens te groeperen in een array-variabele en dan dat hele array in 1-keer in een werkblad plaatsen.

Deze tips kunnen helpen:

Code: Selecteer alles

Option Explicit

Sub GegevensVerplaatsenMetArray()
'gegevens uit een range van cellen in een array plaatsen en daarna in een andere range van cellen plaatsen.

Dim gegevens() As Variant 'arrayvariabele

'handig weetje: als je met heel grote getallen moet werken, kies dan Long in plaats van Integer


ReDim Preserve gegevens(5, 2)
'met redim preserve kan je het formaat van de arrayvariabele aanpassen met behoud van de al aanwezige gegevens.
'In plaats van cijfers kan je ook variabelen gebruiken:

'Dim x as long
'Dim y as long

'Redim preserve gegevens(x,y) ofzo.

gegevens = Range("A1:B5").Value 'plaatst de informatie van een range aan cellen in de array variabele

Range("D1:E5").Value = gegevens 'plaatst de informatie van een array variable in een range aan cellen

gegevens(1, 1) = "informatie" 'plaatst een stukje tekststring op positie 1,1 in het array

End Sub

Sub ArrayMetTags()
'Een record verwijderen uit een array is omslachtig in VBA.
'Het is makkelijker om een record te "taggen" als je er wat mee gedaan hebt.

Dim informatie(1, 3) As Variant
Dim i As Integer

'array laden met informatie
informatie(0, 1) = vbNullString 'deze record is nog niet gebruikt
informatie(1, 1) = "Jantje" 'de data zelf
informatie(0, 2) = "x" 'deze record is al gebruikt
informatie(1, 2) = "Pietje" 'de data zelf
informatie(0, 3) = vbNullString 'deze record is nog niet gebruikt
informatie(1, 3) = "Klaasje" 'de data zelf

For i = 1 To UBound(informatie, 2)
'doorloop alle records van het array

    If informatie(0, i) = vbNullString Then
        'plaats de informatie alleen als die niet al eerder gebruikt was
        ActiveCell.Value = informatie(1, i) 'plaats de informatie uit het record
        informatie(0, i) = "x" 'markeer het record als gebruikt
        ActiveCell.Offset(1, 0).Activate 'ga een cel naar beneden in het werkblad
    End If

Next i


End Sub
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

ehhh... jij kopieer eerst alles naar het verzamel blad, en dan sorteer je ze op datum/tijd.. toch?


tja.... tijd.... ik weet niet wat lang is? maar als ze een paar minuten moeten wachten vind ik het best....
maar ik heb geen idee bij excel wat lang is?
Laatst gewijzigd door Swets op 14 sep 2020 10:12, 1 keer totaal gewijzigd.
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

Titelblokkering op een werkblad uitzetten (doe ik meestal eerst omdat Excel soms raar reageert en de titelbokkering ergens midden in het gegevensgebied plaatst):

ActiveWindow.FreezePanes = False

Titelblokkering aanzetten:

Eerst een geschikte cel selecteren, dan de titelblokkering inschakelen:

Range("B2").select
ActiveWindow.FreezePanes = True
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

ehhh... jij kopieer eerst alles naar het verzamel blad, en dan sorteer je ze op datum/tijd.. toch?
Yep. Daar maak ik gebruik van de functionaliteit van Excel :lol:
Sorteren van gegevens gaat veeeeeeeel sneller dan alles op volgorde in een werkblad plaatsen.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

Rocnc schreef: 14 sep 2020 10:09 Titelblokkering op een werkblad uitzetten (doe ik meestal eerst omdat Excel soms raar reageert en de titelbokkering ergens midden in het gegevensgebied plaatst):

ActiveWindow.FreezePanes = False

Titelblokkering aanzetten:

Eerst een geschikte cel selecteren, dan de titelblokkering inschakelen:

Range("B2").select
ActiveWindow.FreezePanes = True
ook gelukt... snap alleen die B2 niet... ? ik heb al een keer wat andere dingen in gevuld... maar toen stonden de eerste 20 lijnen vast... :-)

vaak is het in nederlands zo simpel.... kijk of de regel er onder de zelfde datum/tijd heeft, Ja, dan de onderste regel, data naar de bovenste kopieren, onderst regel wissen.... :-)... maar het nu ff maken....
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

ook gelukt... snap alleen die B2 niet... ? ik heb al een keer wat andere dingen in gevuld... maar toen stonden de eerste 20 lijnen vast... :-)
B2 is een willekeurige cel. Je kan er alles voor invullen.

Met de hand: om een titel te blokkeren moet je eerst een cel selecteren en dan in het menu op Titel blokkeren drukken. De titelblokkering op het werkblad start dan vanaf de linker bovenhoek van de geselecteerde cel.
Dat werkt dus horizontaal en verticaal. Afhankelijk van de geselecteerde cel worden alle rijen erboven en links ervan vastgezet met titelblokkering.
Om alleen de bovenste rij vast te zetten selecteer je dus eerst cel A2, en dan klik je op Titel blokkeren in het menu.

Het VBA alternatief voor handwerk is:

Code: Selecteer alles

Range("A2").select
ActiveWindow.FreezePanes = True
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

word steeds leuker.... :-)

alleen die dubbele er uit filter lukt nog niet erg.... :-)...
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

vaak is het in nederlands zo simpel.... kijk of de regel er onder de zelfde datum/tijd heeft, Ja, dan de onderste regel, data naar de bovenste kopieren, onderst regel wissen.... :-)... maar het nu ff maken....
Hier kan je last krijgen van de traagheid van VBA, als je dit kunstje met 50.000+ rijen moet gaan doen. Daar lijkt het op neer te komen in jouw geval. Zeker rijen wissen kan veel tijd kosten op onverwachte momenten. Ik vermoed dat hier ergens een bug in Excel zit. Er wordt wel eens over geklaagd op Internet en ik heb het zelf ook wel ervaren.

Ik zou het m.b.v. een array variabele proberen.

Dus: kijk of de rij eronder dezelfde datum en tijd heeft. Beter gezegd: kijk of de huidige rij de zelde datum/tijd heeft als de vorige.
Zo ja, voeg de data dan toe aan het record in de array variabele. Zo nee, dan is er een nieuwe datum en tijd gevonden. Voeg die dan toe aan een nieuw record in de array, samen met de bijbehorende data.

Aan het eind klap je de array in een keer op een werkblad (dat gaat echt heel snel, zelfs als het array heel groot is).

Een alternatieve strategie is om toch celwaarden in het werkblad te verplaatsen. Dat is wat gemakkelijker te begrijpen omdat je letterlijk kan zien wat er gebeurt.
De datum van de rij waar je de informatie uit gehaald hebt verander je dan naar iets in de verre, verre toekomst. Aan het eind sorteer je dan alles nog een keer. Alle overbodige rijen komen dan onderaan de lijst te staan. Die kan je dan verder negeren bij het maken van grafieken.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

tja.... tijd.... ik weet niet wat lang is? maar als ze een paar minuten moeten wachten vind ik het best....
maar ik heb geen idee bij excel wat lang is?
Het is mij vaker dan eens gelukt om een proces dat 15min+ duurde terug te brengen tot enkele seconden. Gewoon door het op een andere manier toe te passen. Dat geeft best een kick :mrgreen:

Een van de grote "openbaringen" voor mij bij het leren programmeren is dat er altijd meerdere manieren zijn om het zelfde doel te bereiken. Het lijkt meer op het schrijven van een verhaaltje dan op iets dat maar één "1+1=2 achtige" waarheid heeft. Ik had dat gewoon niet verwacht van een gestructureerd ding als een computer.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

pff.... ik had opeens weer eens echt werk... :-)

hopen dat ik morgen weer tijd heb....

wil het toch voor elkaar zien te krijgen.... ben zo ver nu.... alleen die dubbele regels er tussen uit zien te krijgen....
http://www.arjan-swets.com (met cnc filmpjes)
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

Succes en plezier ermee.
Ik check zo af en toe wel of je vragen hebt.
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Rocnc
Berichten: 131
Lid geworden op: 02 dec 2008 20:39

Re: csv Log vraagje

Bericht door Rocnc »

En? Is het nog gelukt?
Progress isn't made by early risers. It's made by lazy men trying to find easier ways to do something. - Robert Heinlein
Gebruikersavatar
Swets
Berichten: 2184
Lid geworden op: 09 feb 2007 21:49
Locatie: krimpen aan den IJssel
Contacteer:

Re: csv Log vraagje

Bericht door Swets »

:-) wilde net vragen of je nog een keer kan helpen....

Ik heb het weer ff heel druk gehad.... en eigenlijk geen tijd gehad....
maar het speelt nog wel...

ik vroeg me af, of je misschien kan helpen om even een van de simpelste manieren (maakt me even niet uit of het snel of langzaam is)

om die dubbele tijden er uit te filteren...

ik dacht de datum,tijd met een regel er onder vergelijken,,,, het zelfde, dan alle data naar 1 kopieren, en eentje wissen.... zo iets...
maar ik heb ff geen idee hoe te beginnen........

heb nog ff alles te download gezet... met data... https://www.dropbox.com/s/eogytvab67n8n ... g.zip?dl=0
http://www.arjan-swets.com (met cnc filmpjes)
Plaats reactie