[excel en data logger] dynamische range selecteren

Pagina: 1
Acties:
  • 390 views sinds 30-01-2008
  • Reageer

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
ik hoop in het goed forum :)

ik heb het volgende probleem:

Ik zal eerst uitleggen wat ik doe: ik meet concentraties van bepaalde componenten in verschillende (af)gassen (bijvoorbeeld CO2, NOx). hiervoor gebruik ik ,onderandere, monitoren; apparaten die een bepaald compononent meten. Deze monitore spuwen om de zoveel tijd een signaal uit, dus ik heb een grote hoeveelheid geregistreerde data.

het betreft soms files van meer dan 40.000 regels met voor elke tien seconden een aantal registraties. Nu bewerken we deze in excel want op alle geregistreerde waarden moet een correctie plaatsvinden voor druk, temperatuur en vochtgehalte

Wat ook geregistreerd wordt is de tijd. En aan de klant rapporteren we bijvoorbeeld 3 uren, die wij selecteren aan de hand van de meetresultaten. Nu hebben we in excel een groot aantal kolommen aangemaakt die na de bewerking van de gegevens niets anders doen dan 'kijken' of de opgegeven starttijd oveereenkomt met de tijd van een bepaald 'datapaar' en wanneer dat zo is dan kopieert hij de inhoud van dat datapaar naar zijn eigen kolom.

wat ik nu wil is hetvolgende:

op basis van een tweetal criteria (begin en eindtijd van een meting) een range selecteren. Stel ik heb data om de 2 seconden gelogd, over een periode van 4 uur, en uit die periode wil ik tijd 0 tot 0,5, tijd 1 tot 1,5 en tijd 3 tot 3,5 selecteren met alle bijbehorende data, hoe doe ik dat

help mij

wat heb ik zelf gedaan:

zoeken op google op excel dynamic range selection en meer in deze stijl
op heel veel VBA fora gekeken

en nu dus hier gepost

edit:

oeps ik vergeet de reden, door het nieuwe NOx emissiehandel zijn we van 3 naar vijftien metingen gegaan en van 5 uur meten naar 3 dagen, dit is zo gigantisch veel data dat die sheets richting de 80 mb lopen en volledig vastslaan.....ik weet dat die kijk en kopieer kolomen meer dan 80% van de totale omvang bepalen

[ Voor 11% gewijzigd door DeDooieVent op 11-04-2005 17:26 ]


  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
Is er dan niemand die een idee heeft??

(verkapte schop)

  • PolarBear
  • Registratie: Februari 2001
  • Niet online
Je zou kunnen overwegen om je Excelsheet als ODBC bron te gebruiken en met queries te werken (hoewel ik niet weet of queries werken op een Excelsheet)...

Verwijderd

Is het niet mogelijk dat je even een versie van een excel-werkmap online zet zodat we weten hoe het eruit ziet? Dan is het vast niet moeilijk er een VBA-scriptje voor te schrijven.. Wil ik wel even voor je doen, als je dus even een van die excelbestanden online zet met wat data erin.

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
:) hey tof, hulp :)

ja dat wil ik wel, maar ik heb geen webspace (en daarnaast, ik weet niet helemaal hoe het zit met de rechten op dat ding), mag ik het je emailen?
PolarBear schreef op dinsdag 12 april 2005 @ 15:46:
Je zou kunnen overwegen om je Excelsheet als ODBC bron te gebruiken en met queries te werken (hoewel ik niet weet of queries werken op een Excelsheet)...
ok stel dat ik dit pad volg, hoe ga ik te werk, maak ik een leeg blad aan waar ik al mijn rijen met data invoer met op regel 1 de koppen:

tijdSO2NOxCOCO2CxHy
01:03:10123LOW129188
01:03:2032333139388
01:03:3022322229HIGH

etc etc

en hoe luidt mijn query dan ongeveer?

[ Voor 89% gewijzigd door DeDooieVent op 12-04-2005 17:21 ]


Verwijderd

Ok, met de macro's in dit bestand moet het lukken.

Met behulp van de afbeelding hieronder een korte uitleg:

(eerst uiteraard het blad vullen met data)

Stap 1: op de knop filter klikken
Stap 2: tijdsreeks invoeren (meerdere keren voor meerdere bereiken)
Stap 3: op tabblad 2 staan nu de gefilterde rows

Afbeeldingslocatie: http://www.collegaccnv.nl/temp/plaatje.jpg

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
dank je wel Erik, dit is inderdaad ongeveer wat ik wil, ik ga hiermee aan de slag, het kan zijn dat ik nog wel vragen heb......maar voorlopig ben ik al heel blij :) <-- zo

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
Hoi Erik,

Ik heb nog wel een paar vraagjes :)


- De kolom tijd is nu opgemaakt als tekst, wanneer ik de kolom echter opmaak als tijd dan loopt het niet meer, de reden is dat hij de tijd 0:01:00 als 000100 uitvoert. Ik denk dat het hem zit in Cint
- Kan ik per kolom een gemiddelde berekenen en dat uitvoeren?

Verwijderd

Ik was al bang dat dat eerste zou komen :P
Probleem is dat werken met cellen die opgemaakt zijn als tijd een stuk gecompliceerder is, wat je ziet staan is namelijk niet altijd wat de waarde van de cel is. Typ bijv maar eens 12345 in een als standaardtijd opgemaakte cel, dan maakt ie er iets van 296280:00:00 van, als je de formule van de cel bekijkt is die 18-10-133 0:00:00 en als ik vanuit vba de waarde van de cel uitlees blijkt het die laatste te zijn.

Het is zeker niet onmogelijk (zelfs niet moeilijk) de code aan te passen, maar daarvoor zou het dus echt bijzonder handig zijn een klein rijtje met voorbeeldgegevens te hebben. Hoeven geen echte waarden te zijn, als het maar opgemaakt is als "in het echt".

Die laatste vraag snap ik niet helemaal, het gemiddelde van een hele kolom berekenen kan gewoon met de GEMIDDELDE functie van excel, en dan de range van de kolom.

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
:)

echt gaaf dat je wil helpen :)

ok ik heb een file hier staan in RAR formaat (1,17 mb), ik zie je email adres in je profiel, mag ik het emailen?

het betreft een volledige file, ik zal in de email meer specificeren over de werking en wat het probleem is met de sheet

en over dat gemiddelde, kijk het probleem is dat er op de data uit de logger eerst een bewerking plaatsvindt, deze bewerking vindt in excel plaats (er wordt omgerekend naar standaard omstandigheden, normaalkuubs maar er wordt ook gecorrigeerd voor de afwijking van de monitor)

na de bewerking gaat de sheet kolommen selecteren en kopieren naar een andere kolom op basis van het tijd criterium

elke tijdcriterium krijgt dus zijn eigen kolom, waarover inderdaad makkelijk een gemiddelde is te berekenen (gewoon =average(ab7:ab64000))

edit
en voor elke meting wordt een apparte kolom aangemaakt, echt met vijftien metingen loopt die sheet ergens tot kolom bg ofzo en dan duizenden regels met dezelfde selectieformule erin, dat maakt de sheet log

het liefst wil ik dus uit de bewerkte kolommen variabele gemiddelden kunnen berekenen aan de hand van een begin en een eindtijd, voor vijftien metingen zodat ik die kopieer actie naar die achterlijke hoeveelheid kolomen kan deleten (ik heb de sheet nu open, er zijn 7 verschillende componenten, plus tijd dus 8 kolommen, dat levert voor 15 metingen, 15x7 kopieer kolommen
/edit

de vraag is eigenlijk dat bij die ab7 en ab64000, de rijnummers vervangen moeten worden door twee variabelen, afhankelijk van de gestelde tijd bijvoorbeeld stel dat de data in rij 670 tot en met 1300 alle waarden vertegenwoordigt die vallen in de tijd 13:00h tot 13:30h dan zou die range in dat geval (ab670:ab1300) zijn, maar het punt is dat die keuze niet vastligt daarnaast kunnen metingen van 22:00 tot 2:00 uur de volgende dag lopen (nachtmetingen), dus er moet eigenlijk ook een datum criterium zijn.

daarnaast moet ik uit die hele data set niet 1 maar 15 verschillende metingen destileren

die sheet die ik heb die doet dat wel maar is echt onwijze log

Als ik je die sheet mag toesturen begrijp je het mischien iets beter

:)

[ Voor 24% gewijzigd door DeDooieVent op 13-04-2005 18:26 ]


Verwijderd

Mail me maar.

Ik moet trouwens wel zeggen, als ik het zo lees, dat een database meer geschikt zou zijn om met deze hoeveelheden data om te gaan, beter dan excel. Maar het is uiteraard wel gewoon mogelijk, daar ga ik tenminste vanuit.

  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
Dat over die database ben ik het helemaal mee eens, en dat is ook de richting waar ik heen wil maar nu de rest nog :|

Ik heb je inmiddels een email gestuurd

iig dank dat je mee wil denken :)

groet menno

Verwijderd

Ok, ontvangen. Ik probeer er nu achter te komen wat er precies moet gaan gebeuren, altijd de moeilijkste stap.

Edit: vanaf hier is het misschien niet interessant meer voor andere gebruikers, maar ik hoop dat de moderators e.d. het me vergeven, wat is nou een berichtje tussen al die andere :P

Volgens mij is het simpeler dan ik dacht, kort samengevat is dus wat er eigenlijk moet gebeuren dat alle loggerwaarden van alle metingen allemaal onder elkaar komen te staan in een heel erg lange kolom, en je vervolgens in het gemiddelden gedeelte gewoon aangeeft van waar tot waar de gegevens staan en hij dan je gemiddelde teruggeeft, niet?

Edit: ok, ik heb je teruggemaild, ik denk dat dit is wat je bedoelt.

[ Voor 78% gewijzigd door Verwijderd op 14-04-2005 19:49 ]


  • DeDooieVent
  • Registratie: April 2005
  • Laatst online: 01-05 15:47
Erik,

zoals in mijn mail aangegeven, je bent geniaal

inderdaad dat was de bedoeling, selecteren uit 1 lange kolom

ik heb zelf de code onder een knop ondergebracht

zodat de sheet wat rust heeft (hij ging elke keer rekenen)

groet menno

:)

edit:
Verwijderd schreef op donderdag 14 april 2005 @ 18:49:
Volgens mij is het simpeler dan ik dacht, kort samengevat is dus wat er eigenlijk moet gebeuren dat alle loggerwaarden van alle metingen allemaal onder elkaar komen te staan in een heel erg lange kolom, en je vervolgens in het gemiddelden gedeelte gewoon aangeeft van waar tot waar de gegevens staan en hij dan je gemiddelde teruggeeft, niet?
precies wat ik bedoelde

uit de hele kolom verschillende gemiddelden bepalen op basis van de corresponderende tijden

[ Voor 55% gewijzigd door DeDooieVent op 15-04-2005 11:33 ]

Pagina: 1