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

excel-formule

Status
Niet open voor verdere reacties.

johan12

Gebruiker
Lid geworden
21 jul 2005
Berichten
9
Hoe kan ik een formule maken voor het volgende probleem:
Ik wil alleen de laatste (positieve of negatieve)getalwaarde van bijvoorbeeld a1 t/m a12 overnemen in een andere cel. Als de celwaarde 0 (nul) is dan dient deze niet overgenomen te worden.
Dus:
als a12<>0, dan a12;
als a12=0, dan a11;
als a11<>0, dan a11;
als a11=0, dan a10;
als a10<>0, dan a10;
als a10=0, dan a9, enzovoort.Wat is de bijbehorende formule hiervoor?

weet je hiervoor een oplossing? Bij voorbaat dank.
 
Wat bedoel je met 'laatste waarde' ....... ?
Dat kan zijn:
De hoogste waarde in de reeks A1:A12 (behalve nul)
Of de waarde uit A12 (behalve nul)
Of in de naastliggende cel de waarde van de voorliggende (behalve nul) ...

Beetje gissen dus .......
 
excel formule

Pasja, Vecom: met de laatste waarde bedoel ik de laatste in de reeks waar geen nul staat. zie ter verduidelijking de bijlage 'map2.xls'
 

Bijlagen

Wat je kan doen is het volgende. In dat voorbeeld map2 heb ik op A13 nog een 0 toegevoegd omdat het anders niet werkt als a12 geen 0 is.

Vervolgens maak ik een formule:
=VERGELIJKEN(0;A1:A13;0)
Deze formule zorgt ervoor dat ik het nummer van de cel krijg waar voor het eerst een 0 staat. Via
=INDEX(A1:A12;VERGELIJKEN(0;A1:A13;0)-1)
krijg je de waarde van de cel die boven de eerste nul staat.

Let wel op dat wanneer je dus in cel 3 een 0 hebt staan en in cel 4 een waarde, dat je dan toch de waarde van cel 2 terug krijgt.

Ook zal er een fout komen wanneer cel A1 de waarde 0 heeft.

(overigens zal het in een macro wat makkelijker gaan
Sub test()
Range("A12").Select
On Error GoTo blaat
While ActiveCell.Value = 0
ActiveCell.Offset(-1, 0).Select
Wend
blaat:
Range("B1").Value = ActiveCell.Value

Dit zou ook goed gaan wanneer alles 0 is want dan wordt B1 ook gewoon 0.
)
 
Laatst bewerkt:
Snabbi, bedankt voor je inbreng . Deze oplossing is inderdaad goed!
Voor wat betreft de macro moet ik dit eerst eens uitproberen, ik heb er nog geen ervaring mee.
 
Hoi Johan,

Een andere oplossing, maar dan met een zogenaamde matrix-formule:
=INDEX($A$1:$A$12;MAX(($A$1:$A$12<>0)*RIJ($A$1:$A$12)))

Een matrix-formule voer je in door Shift & Ctrl & Enter tegelijk in te drukken.

Wat doet de formule:
De waarde in kolom A wordt met het rijnummer van dir rij vermenigvuldigd, dus A1<>0 dan staat er 1 en A11<>0 dan staat er 11. Van dit bereik wordt het max bepaald dus het hoogste rijnummer dat niet gelijk is aan 0. Met index zoek je deze waarde op. Let op! Als je bereik in A11:A22 staat dan wordt de index-formule Index($A$1:$A$22,max(....)) De max-formule geeft het rijnummer van de laatste waarde aan en niet de positie in het bereik!

Meer over matrix-formules:
http://users.pandora.be/ingrid/excel/matrix.htm#duplv
of mijn documentje (extensie even wijzigen in xls)

Jeroen
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan