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

reeksen van positieve waarden

Status
Niet open voor verdere reacties.

kriekos

Gebruiker
Lid geworden
22 mrt 2009
Berichten
149
Hallo,

ik heb een dataset van cijfers (winst) van bedrijven voor de jaren '92 - '07. Ik heb een 6697 rijen en ik zou in elke rij bepaalde cellen willen selecteren en plakken in een ander werkblad.

Welke cellen? Dat is drieledig. Ten eerste wil ik alle cellen selecteren die volgen op een negatief getal (het bedrijf maakte vorig jaar verlies en dit jaar winst). Ten tweede wil ik alle cellen selecteren waarbij de vorige of de vorige 2 jaren positief waren. Ten derde wil ik alle cellen selecteren waarbij de 3 vorige of meer jaren poitief waren. Ik begin steeds pas te tellen vanaf het eerste beschikbare cijfer (zie ook opmerking bij cel N2). De eerste waarde kan dus nooit geselecteerd worden, maar wordt wel gebruikt voor het berekenen van het aantal jaren dat de reeks van positieve waarde al standhoudt.

Wanneer deze cellen geselecteerd zijn, kan ik ze kopieren naar een apart werkblad.

Ik heb een voorbeeld toegevoegd. Ik heb hier met kleuren aangeduidt wat ik zoek. Dit zal alles duidelijker maken. De groene cellen staan voor jaren die volgen op een negatief getal. De gele cellen staan voor jaren die volgen op 1 of 2 jaren van positieve getallen. De rode cellen staan voor jaren die volgen op 3 of meerdere positieve getallen. Ik wil eerst alle groene cellen selecteren, daarna de gele en ten slotte te rode, zodat ik deze cellen kan afzonderen.

Kan iemand deze selectie automatiseren? Want 6697 rijen is veel als ik het handmatig moet doen.
 

Bijlagen

Laatst bewerkt:
Je kunt een cel maar één keer selecteren. Dus zul je die bewerkingen achter elkaar moeten zien te doen.
Zou Filter niets voor u kunnen betekenen?

Cobbe
 
Ik zie nu dat je niet zomaar cellen kan selecteren en plakken naar een ander tabblad. Misschien kan iemand een formule maken dat de andere cellen verwijderd worden?

Dus om samen te vatten:

Ten eerste moeten alle getallen verwijderd worden die niet volgen op een negatieve getallen.
Ten tweede moeten alle getallen verwijderd worden die niet volgen op 1 of 2 positieve getallen.
Ten derde moeten alle getallen verwijderd worden die niet volgen op 3 of meer positieve getallen.

Ik heb een aangepast voorbeeld bijgevoegd dat het nog een klein beetje duidelijker moet maken.
 

Bijlagen

Laatst bewerkt:
Niemand een voorstel? :s Het zou me echt wel heel veel tijd besparen.
 
Ik heb het niet helemaal goed begrepen hoe maar kun je iets met deze aanzet?
Misschien dat je de formules zelf kunt aanpassen aan je wensen.

Zie gele cellen in blad2
 

Bijlagen

Dankjewel, Willem. Het heeft me al op weg gezet. Ik heb jouw formule een beetje aangepast ('groter dan 0' i.p.v. 'groter dan de vorige cel'), maar er zitten nog 2 problemen in.

Ten eerste, wanneer ik bijvoorbeeld de gele cellen (1 of 2 jaren van winst) wil afzonderen, sluit deze formule de groene cellen (voor het eerst winst, vorig jaar was er verlies) niet uit. Ook wanneer ik de rode cellen (3 of meer jaar achtereenvolgend winst) wil afzonderen, sluit de formule de gele en groene cellen niet uit. Daarbij komt nog eens dat alle cellen die voldoen aan de voorwaarde voor rode cellen ook voldoen aan de voorwaarde voor gele en groene cellen.

Ten tweede, deze formule laat de eerste niet-lege cel van de rij niet buiten beschouwing. Ik laat deze buiten beschouwing omdat men niet weet of men in het jaar daarvoor winst of verlies maakte en men dus ook niet kan zeggen het hoeveelste jaar het is dat het winst maakt. De formule houdt hier geen rekening mee.

ik heb een voorbeeld toegevoegd, waarin ik met jouw aangepaste formule de rode cellen probeer af te zonderen. Ik heb in rode letters aangeduid welke cellen er in feite niet zouden mogen staan.
 

Bijlagen

Dankjewel, Cobbe, maar deze code maakt gewoon de cellen B2:F17 leeg. Ik zou zeggen, ik zal de formule aanpassen, maar visual basics is chinees voor mij. Wat is i en wat is y in de code?
 
Ik begrijp nog niet precies wanneer nu de cel groen geel of rood is.

Mijn interpretatie
ongekleurd: 1e jaar met gegevens.
groen: 1e jaar winst
geel: 2 jaar winst
rood: 3 of meer jaar winst.

Cel O3 is ongekleurd omdat N3 geen gegevens.
Cel P3 is groen omdat O2 negatief was.
Cel Q3 is geel omdat oom P3 positief was.

Waarom is dan cel O2 groen, N2 was toch ook positief?
P2 is geel maar N2 en O2 zijn toch ook positief, waarom dan niet rood?
 
Ik zat er ook al even mee te stoeien en kwam óók (net als Popipipo) tot de ontdekking dat 'de vlag de lading niet dekt'. Mijn oplossing via VBA wil ik eerst gecheckt hebben door de TS alvorens ik verder ga met het uitsplitsen van de waarden naar kleur.
In de sheet zie je de tab 'Leo' waar mijn 'kleurtoekenning' staat (alleen geel en groen!). Dit is geregeld via deze kleine code...
Code:
Sub GeefKleur()
Dim s As Range
Dim iKol As Integer

    For Each s In Range("B2:Q" & Cells(Rows.Count, 1).End(xlUp).Row)
        Select Case s.Column
            Case 2: iKol = 2
            Case 3: iKol = 3
            Case Else: iKol = 0
        End Select
            
        If s.Value > 0 And s.Offset(0, -1).Value < 0 Then
            s.Interior.Color = vbGreen
        ElseIf s.Value > 0 And (s.Offset(0, iKol + -2).Value < 0 Or s.Offset(0, iKol + -3).Value < 0) Then
            s.Interior.Color = vbYellow
        End If
    Next s

End Sub

Dus Kriekos... als je zo vriendelijk wilt zijn?

Groet, Leo
 

Bijlagen

Willem, Ik wil de observaties onderverdelen naargelang de reeks van opeenvolgende winst. Zo wil ik een subdataset krijgen van (a) alle observatie die volgen op een verlies, (b) alle observaties die volgen op 1 of 2 jaren van winst en (c) alle observaties die volgen op 3 of meer jaren van winst.

bv. -100, 200, 300, 150, 250, 50
eerste subdataset (groene cellen): cel '200'
tweede subdataset (gele cellen): cel '300' en cel '150'
derde subdataset (rode cellen): cel '250' en cel '50'
 
Leo, ik heb het bestand nagekeken. Mijn 'vlag' klopte idd niet helemaal. ik heb de groene en gele cellen nagekeken. Er zat nog een klein foutje in. ik heb nog enekele gele cellen moeten aanduiden (hier staat een kader rond). Deze aangeduide cellen volgen namelijk ook op 1 of 2 jaren van winst.
 

Bijlagen

Ok maar waarom wil je de eerste waarde overslaan?
Dat je de eerste waarde geen geel maakt kan ik begrijpen maar wat is het verschil tussen vorige waarde onbekend of negatief als de huidige waarde positief is?
dus bv:
125, 225
Zijn toch 2 jaren winst en mag dus geel (oranje hier voor de duidelijkheid) zijn?
of
255, -1, 75, 85, 100, 250, 300, 175


Is dit niet zo dan begrijp ik er niets meer van en pas ik
 
Als je niet weet of het vorige jaar positief of negatief is, kan je niet weten of het dit jaar volgt op een negatief getal, 1 of 2 positieve getallen of 3 of meer positieve getallen. Je weet dus niet op welk punt in de reeks je jezelf bevindt.
 
Leo, ik heb verder gewerkt met jouw bestand.

Observaties die volgen op een negatief getal (groene cellen): =ALS(Leo!G6<0;Leo!H6;"")

Observaties die volgen op 1 of 2 jaren van winst (gele cellen): =ALS(EN(Leo!G6<0;Leo!H6>0);OF(EN(Leo!F6<0;Leo!G6>0;Leo!H6>0));Leo!I6;"")

Observaties die volgen op 3 of meer jaren van winst (rode cellen): =ALS(EN(Leo!K6<0;Leo!L6>0;Leo!M6>0;Leo!N6>0);OF(EN(Leo!J6<0;Leo!K6>0;Leo!L6>0;Leo!M6>0;Leo!N6>0));OF(EN(Leo!I6<0;Leo!J6>0;Leo!K6>0;Leo!L6>0;Leo!M6>0;Leo!N6>0));...enz...;Leo!O6;"")

Voor de groene cellen gaat de formule op en geeft het het juiste resultaat, maar vanaf de formule voor de gele cellen, geeft excel een foutmelding. Wat is er fout aan de formule voor de gele cellen? Als ik dat weet, kan ik eens testen of het resultaat juist is.

Voor de rode cellen, geeft '3 OF MEER' wel een probleem, want dat maakt de formule oneindig lang. Of toch tot op zijn minst 15 OF-termen (15 = aantal kolommen) lang. Ik heb dit in de rode formule maar vervangen door '...enz...'.
 
Helaas, GiMe. De aangeduide cellen voldoen niet aan de bovenvernoemde voorwaarden. Mede ook omdat ik een foutje had gemaakt bij het stellen van de voorwaarden (die ik later rechtgezet heb). Bijvoorbeeld, je houdt rekening met de eerste niet-lege cellen om te bepalen hoe lang de reeks van winsten al duurt.

Als je nog zou willen helpen, zou ik aanraden af te gaan op het (verbeterde) bestand van Leo (Temp_reeksen_van_postieve_waarden).

Toch hartelijk bedankt voor de poging!
 
Kriekos, Ook al vind ik de vraag héél interessant, kom ik er niet meer uit met VBA in combinatie met de 'nieuwe' regels. Helaas wordt komende week erg druk voor mij en heb dus niet veel tijd om hier heel diep over na te denken.
Wellicht dat ik 'm ooit nog 'ns aanpak (en dan plaats), maar voor nu stopt hier voor mij het lijntje.
Succes met het oplossen van je quest!

Groet, Leo
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan