• 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.

gegevens vergelijken opslaan en optellen

Status
Niet open voor verdere reacties.

newbie99

Gebruiker
Lid geworden
21 mrt 2010
Berichten
5
Hallo

Ik ben nieuw op dit forum en heb al veel gelezen maar kom er niet uit.
Ik heb wel enige kennis van formules en visual basic maar niet heel veel.

Ik heb het volgende probleem en wil het graag oplossen met een macro

Ik heb een excel bestand dat elke 5 seconden data binnenkrijgt in cel B1 B2 en C1 C2
De data begint altijd met 0.01 en dan 0.02 en loopt steeds verder op, achter het getal komt een naam te staan die bij het getal hoort, dit kunnen wel 20 of meer namen zijn.

Nu wil ik dus dat elke unieke naam die in C1 voorkomt word opgeslagen ergens in dezelfde sheet en achter de opgeslagen naam een 1 komt te staan.
Als de naam vaker terug komt in C1 dan moet bij de opgeslagen naam 1 bij op tellen.

Het uiteindelijke doel is dus dat ik kan zien hoeveel verschillende namen er zijn geweest en hoevaak dezelfe naam is geweest.

Zie bijlage voor voorbeeld

Als er onduidelijkheden zijn hoor ik het graag.
En alvast bedankt voor het meedenken.:thumb:

Groet Newbie99
 

Bijlagen

Met draaitabel

Hallo

Bedankt voor de reactie en de draaitabel, ik heb nog nooit met draaitabel gewerkt.
Ik zie niet echt hoe ik het toe kan passen?? of ik doe het verkeerd.:confused:

Er komt om de 5 sec (met een macro die de gegevens vernieuwd) nieuwe data binnen dit is een oneindige macro.

In cel B1 en C1 komt om de 5 sec. altijd een opvolgend getal en in C1 een nieuwe naam, de gegevens die in cel B1 en C1 stonden zakken naar B2 en C2 en 5 sec. later komen er weer andere gegevens in B1 en C1.

Dus er zijn altijd maar de laatste twee namen zichtbaar.

Ik wil dus na bijv 100x nieuwe gegevens kunnen zien welke namen er geweest zijn en hoevaak een bepaalde naam geweest is.

Zijn er nog vragen dan hoor ik het wel.

Groet Newbie99:thumb:
 
Als je de macro iets aanpast door op rij 2 te beginnen ipv rij 1. Dan kun je op rij 1 kolomkoppen maken die in de draaitabel gebruikt gaan worden.

Ik heb de draaitabel een dynamisch bereik gegeven waardoor nieuwe rijen toegevoegd worden en je moet je macro eindigen met het volgende stukje code:

Code:
ActiveSheet.PivotTables("Draaitabel1").PivotCache.refresh

gr wim
 

Bijlagen

er was weinig dynamisch aan het bereik van je draaitabel, bij deze heb ik dat aangepast en tegelijkertijd laten werken op een change_event in de kolommen B en C
 

Bijlagen

Als je de macro iets aanpast door op rij 2 te beginnen ipv rij 1. Dan kun je op rij 1 kolomkoppen maken die in de draaitabel gebruikt gaan worden.

Ik heb de draaitabel een dynamisch bereik gegeven waardoor nieuwe rijen toegevoegd worden en je moet je macro eindigen met het volgende stukje code:

Code:
ActiveSheet.PivotTables("Draaitabel1").PivotCache.refresh

gr wim

hallo

Ik denk dat het zo niet werkt.:(

Als mijn data een refresh krijgt en de naam verdwijnt dan verdwijnt de naam ook uit de draaitabel en dat is nu juist het probleem daar moet de naam in blijven en als bijv. na 20x een refresh gehad te hebben weer deze naam komt moet hij er een bijop tellen.

Ik heb het ook een beetje aangepast voor de duidelijkheid.
Nu heb ik nooit meer gegevens als alleen in cel B2 en C2.
Bij elke refresh vervallen de huidige gegevens en komen er nieuwe gegevens in B2 en C2
Alleen het getal in B2 loop gelijdelijk op van 0.01 naar 0.02 dan 0.03 enz. enz.
In cel C2 komt een naam (die van te voren niet bekend is dus willekeurig, en kan ook nooit twee maal dezelfde naam achter elkaar zijn, maar kan wel bijv Piet na refresh jan en dan na Refresh weer peit zijn maar ook een andere naam)

Ik hoop dat het wat duidelijker is geworden.

Alvast bedankt voor het meedenken:thumb::thumb:

Groet Newbie99
 
dit werkblad kopieert van zodra B1 en C1 waarden bevatten deze door naar onderaan de lijst in D:E, wist die cellen zodat ze klaar staan voor de volgende update en past de draaitabel aan.
 

Bijlagen

er was weinig dynamisch aan het bereik van je draaitabel, bij deze heb ik dat aangepast en tegelijkertijd laten werken op een change_event in de kolommen B en C

hoe bedoel je als als bij rij twee een nieuwe rij ingvoegd wordt wordt deze in de draaitabel verwerkt.

gr wim
 
dit werkblad kopieert van zodra B1 en C1 waarden bevatten deze door naar onderaan de lijst in D:E, wist die cellen zodat ze klaar staan voor de volgende update en past de draaitabel aan.

Hallo

Deze werk al een stuk beter bedankt.

Nog een vraag: het kan zijn dat na een refresh wel nieuwe data komt maar dat het nog niets is veranderd dus het getal en de naam zijn hetzelfde als de vorige refresh.
Kun je dus instellen als na een refresh het getal voor de naam hetzelfde is gebleven dat er dan niet +1 bij de naam komt in kolom H (anders krijg ik dus valse data telling)

Dit is de eerste keer dat ik iets ga doen met draaitabellen dus zou je kunnen uitleggen waar ik de instellingen kan zien die jou draaitabel gebruikt zodat ik het ook ga begrijpen wat en waarom het gebeurt.

:thumb::thumb::thumb::thumb:

Groet newbie99
 
dit werkblad kopieert van zodra B1 en C1 waarden bevatten deze door naar onderaan de lijst in D:E, wist die cellen zodat ze klaar staan voor de volgende update en past de draaitabel aan.

Hallo

Waar kan vinden wat de instellingen zijn van de draaitabel???

Zoals hoever dynamic range gaat en waarom de gegevens van B1 en C1 opgeslagen worden in kolom D:E

Hoe kan ik deze eventueel editten.

Groet newbie99:thumb:
 
1. een gedefinieerd naam data, is te vinden via invoegen>naam>definieren (in excel2003) en die bepaalt op een dynamische manier het bereik van je gegevens. Snel uitgelegd, je moet anders de formule maar eens ontleden, kijkt hij vanaf D1 van je werkblad Blad1 2 kolommen breed, dus D en E, en zoveel rijen diep als het rijnummer van de laatste niet-lege cel in het bereik van E1:E990 van blad1. Dus een keer je meer dan 990 gegevens staan hebt in E moet je die 990 veranderen naar 10.000 of 50.000 of ...
Code:
=VERSCHUIVING(Blad1!$D$1;;;MAX(ALS(Blad1!$E$1:$E$990<>"";RIJ(Blad1!$E$1:$E$990);""));2)

2. zijn B1 en C1 beiden ingevuld, dan worden ze doorgekopieerd naar de rij net onder de laatste niet-lege E-cel, de cellen D en E via die macro Private Sub Worksheet_Change(ByVal Target As Range) in de module van blad1 (anders ook te bereiken via de rechtermuisknop op de tab van blad1 en dan programmacode weergeven).
Diemacro reageert dus op veranderingen in je werkblad en afhankelijk van wat er gewijzigd wordt loopt hij de macro door tot helemaal op het einde (zie de uitleg ernaast).

3. Het is nu nog niet zo dat als je 2 maal na elkaar dezelfde naam ingeeft hij niet dubbelgetelt wordt, daarvoor moet je onderstaande rode aanpassing doen :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim NieuweInvoer As Range
  Set NieuweInvoer = Range("B1:C1")
  If Intersect(Target, NieuweInvoer) Is Nothing Then Exit Sub  'niets veranderd in die 2 cellen = stop
  If WorksheetFunction.CountA(NieuweInvoer) <> 2 Then Exit Sub  'nog niet alle 2 cellen ingevuld = stop
  [COLOR="Red"]If LCase(Range("E" & Rows.Count).End(xlUp).Value) <> LCase(Range("C1").Value) Then  'laatst ingegeven naam verschillend van huidige naam = doorkopieren !!
    NieuweInvoer.Copy Range("E" & Rows.Count).End(xlUp).Offset(1, -1)  'kopieer deze 2 cellen door onderaan lijst in D:E
  End If[/COLOR] 
 NieuweInvoer.ClearContents                               '2 cellen terug leegmaken
  ActiveSheet.PivotTables(1).PivotCache.refresh            'draaitabel aanpassen
End Sub
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan