[Excel 2003] Score formule maken met een range

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
Voor een wetenschappelijk medisch onderzoek moet ik in Excel een database maken met patiëntengegevens. Een gedeelte van deze gegevens bestaat uit een score die berekend kan worden door punten toe te kennen aan een parameter. Nu wil ik hiervoor een goede formule maken zodat ik geen dubbel werk hoef te doen en het voortkomt ook fouten omdat ik minder handwerk moet doen.

Het gaat onder andere om deze score:

Laagste temperatuur rectaal
Temp.> 35,6 °C = 0 punten
Temp 35-35,6 °C = 8 punten
Temp< 35 °C = 15 punten

Ik heb tot nu dit gemaakt:
=ALS(AV2<35;"18";ALS(AV2>35,6;"0";ALS(AV2=anders;"8")))

AV2 is de kolom met de temp.

Nu wil weten hoe ik in Excel moet weergeven dat een patiënt een 8 punten krijgt als de temperatuur tussen de 35.0-.35.6 graden zit. 'Anders' of 'Else' werkt niet. Hoe maak je een range?

Iemand een tip voor de juiste syntax?

Specs


Acties:
  • 0 Henk 'm!

  • Rupie
  • Registratie: Augustus 2006
  • Laatst online: 08-09 15:19
Heb je niet al voldoende aan:

=ALS(AV2<35;"15";ALS(AV2>35,6;"0";"8"))

Als je in Excel het boxje gebruikt voor functieargumenten zie je dat ALS-functie is opgebouwdt als:
=ALS(test;waarde als waar;waarde als niet waar)

Desktop | Server | Laptop


Acties:
  • 0 Henk 'm!

Verwijderd

een bereik (of range) maak je door voorwaarden te koppelen. dit kan in het testgedeelte van de als-formule aangegeven worden mbv. de formule EN.

de oplossing van Rupie kan ook tenzij je foutmetingen en ongeldige temperatuurbereiken wil uitsluiten.

Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
Kan je een voorbeeld geven van hoe het dan wordt? Ik snap niet hoe je voorwaarden moet koppelen met EN. Het idee van Rupie voldoet, maar ik heb ook variabelen met meerdere ranges zoals:

PO2/FiO2 ratio (mmHg/% zuurstof)
>2,49 =0 punten
1-2,49 =5 punten
0,3-0,99 =16 punten
<0,3 =28 punten


Hierbij voldoet deze oplossing niet meer.

Ik ben vrij nieuw in Excel, maar verder wel behoorlijk ervaren op PC gebied. Vergeef mij mijn noob-vragen :) . Ik heb vanochtend al een meer dan uur zitten googlen, maar ik vind nergens een duidelijke uitleg. Als het ik een keer heb gezien snap ik het.

Specs


Acties:
  • 0 Henk 'm!

  • Rupie
  • Registratie: Augustus 2006
  • Laatst online: 08-09 15:19
Maar mijn formule voldoet dan wel weer als je er van maakt:
=ALS(AV2>2,49;"0";ALS(AV2>=1;"5";ALS(AV2>=0,3;"16";"28")))

Als ik _heretic_ goed begrijp bedoelt hij:
=ALS(AV2>2,49;"0";ALS(EN(AV2>=1;AV2<=2,49);"5";ALS(EN(AV2>=0,3;AV2<=0,99);"16";ALS(AV2<0,3;"28";""))))

In mijn geval sluit je elke keer 1 resultaat uit, net zolang tot je de goede tegen komt. In de 2e variant test je echt elke keer of de waarde tussen de 2 grenzen in ligt. En dan zou je er verder toch zelf aardig uit moeten kunnen komen lijkt mij!

Desktop | Server | Laptop


Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
Ja zo kom ik verder. Ik ga de syntax rustig bestuderen en dan snap ik de onderliggende logica en daarna kan ik vermoedelijk zelf ook syntax schrijven omdat ik het begrijp.

Dank voor de tips. Dit was erg nuttig.

Specs


Acties:
  • 0 Henk 'm!

  • psvjw
  • Registratie: Oktober 2010
  • Laatst online: 27-08 15:54
Kleine opmerking (voor de puristen):

als je de formule zo uitvoert --> =ALS(AV2>2,49;"0";ALS(EN(AV2>=1;AV2<=2,49);"5";ALS(EN(AV2>=0,3;AV2<=0,99);"16";ALS(AV2<0,3;"28";""))))

worden de puntenaantallen weergegeven als tekst. Dus ik zou de aanhalingstekens rond de punstenscores weglaten...

=ALS(AV2>2,49;0;ALS(EN(AV2>=1;AV2<=2,49);5;ALS(EN(AV2>=0,3;AV2<=0,99);16;ALS(AV2<0,3;28;""))))


als je de scores optelt (in een formule) rekent hij ook de getallen uit de eerste formule mee, dus wat dat betreft geen verschil...

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

En op een gegeven moment loop je tegen een wijziging in je scores aan of het maximum van te nesten if's. Beter onderhoudbaar is dan een apart blad met scoretabellen -die je bvk een naam geeft en volsta je met: vert.zoeken(temperatuurscore;A1) :)

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

Dat is ook een goed vraagstuk trouwens. Stel ik wil een conditie hebben en die aan meerdere cellen verbinden, naar wens. Bijvoorbeeld =true of <>2. Bestaat daar dan een passende "voer deze string uit als functie" voor? Ik heb nog niet zoiets kunnen vinden. Dat is en stuk praktischer dan vert. zoeken (of VLOOKUOP, desgewenst).

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Dit probleem doet wat denken aan deze oplossing met lookup als je geen apart blad wil. :p
Verwijderd schreef op maandag 05 maart 2012 @ 19:06:
Dat is ook een goed vraagstuk trouwens. Stel ik wil een conditie hebben en die aan meerdere cellen verbinden, naar wens. Bijvoorbeeld =true of <>2. Bestaat daar dan een passende "voer deze string uit als functie" voor?
offtopic:
Iets als countif(s) evt in combinatie aribitrary lookups (geeft wel wat bende)? Ik mis wat context ;)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
@ Lustucru

Het aantal te nesten IF's is een probleem waar ik tegen aanliep.
Ik moest een score toekennen aan temperatuur (andere schaal dan in TS).

<29,7 5 punten
29,7-31,2 4 punten
31,3-32,8 3 punten
32,9-34,4 2 punten
34,5-36,0 1 punten
36,1-37,5 0 punten
37,6-39,1 1 punten
39,2-40,7 2 punten
>40,7 3 punten

Maar dit paste niet in één formule omdat ik negen IF's nodig had.

Maar dit wist ik als volgt op te lossen:
=ALS(BU2<29,7;5;ALS(EN(BU2>=29,7;BU2<=31,2);4;ALS(EN(BU2>=31,3;BU2<=32,8);3;ALS(EN(BU2>=32,9;BU2<=34,4);2;ALS(EN(BU2>=34,5;BU2<=36);1;ALS(EN(BU2>=36,1;BU2<=37,5);0;ALS(EN(BU2>=37,6;BU2<=39,1);1;0))))))) met het maximaal aantal IF's

en daarna een kolom met:
=ALS(EN(BU3>=39,2;BU3<=40,7);2;ALS(BU3>40,8;3;0))

En tenslotte een sommatie
=BV2+BW2:

Het is wat omslachtig maar werkt uiteindelijk goed. Is dit de beste methode of zijn ook hier weer betere trucs voor?

Specs


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Nee dat is natuurlijk niet de beste methode, hoe hou je het vol? :p Een betere oplossing staat direct boven je gelinkt:
code:
1
=LOOKUP(A1,{-3E+300,29.7,31.3,32.9,34.5,36.1,37.6,39.2,40.7},{5,4,3,2,1,0,1,2,3})

In het Nederlands heet die functie ZOEKEN.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
Hoe ik het vol houd? Ik ben nieuw hiermee en als een kind zo blij als het werkt ;). Ik zal jouw oplossing eens bestuderen. Kan ik vast iets mee.

Specs


Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Kwak schreef op dinsdag 06 maart 2012 @ 14:42:
@ Lustucru
Het aantal te nesten IF's is een probleem waar ik tegen aanliep.
Altijd fijn om gelijk te krijgen. :P


Waar het op neer komt is dat zowel zoeken(), vert.zoeken() als hor.zoeken() in een matrix kunnen zoeken naar een waarde om een corresponderende waarde uit de (of een andere) matrix terug te geven. Als benaderen 'true' is stopt zoeken bij de laatste waarde die kleiner of gelijk is aan de zoekwaarde. Maw je hoeft alleen de grenzen van de ranges aan te geven.

Pedorus geeft de matrices op in de formule zelf; ik geef er de voorkeur aan om die matrices in een werkblad te zetten. Het eerste geeft imo onoverzichtelijke formules en is lastiger te onderhouden, het tweede zadelt je op met een aparte tabel al dan niet in een apart blad. Mijn voorkeur gaat meestal uit naar de tweede mogelijkheid.

[ Voor 26% gewijzigd door Lustucru op 06-03-2012 19:09 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

pedorus schreef op maandag 05 maart 2012 @ 22:59:
Dit probleem doet wat denken aan deze oplossing met lookup als je geen apart blad wil. :p


[...]

offtopic:
Iets als countif(s) evt in combinatie aribitrary lookups (geeft wel wat bende)? Ik mis wat context ;)
Ik heb een excel sheet met 10 losse sheets erin met dezelfde berekeningen, die worden uitgevoerd op dezelfde data. Als ik die berekening wil veranderen kan ik 10 sheets langsgaan. (of allen selecteren en het een keer aanpassen). Beide opties zijn niet echt praktisch...

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het ontgaat me even waarom je 10 sheets met dezelfde berekeningen op dezelfde data wilt hebben?

Geef eens een voorbeeldje, of nog beter, start je eigen topic. ;)
/me mompelt iets over topickaping door crewleden :p

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Acties:
  • 0 Henk 'm!

Verwijderd

Ik bedoel natuurlijk andere data. 8)7

En ik ben inderdaad lichtelijk iemand's topic aan het kapen.. Efin. Zo belangrijk is het vraagstuk nu ook weer niet.

Acties:
  • 0 Henk 'm!

  • Kwak
  • Registratie: December 2005
  • Laatst online: 24-07 11:17
/me mompelt iets over topickaping door crewleden :p
Jullie doen maar, ik heb mijn antwoord toch al. De oplossing met 'zoeken' ziet er een stuk eleganter dan mijn enorme code.

Dank voor alle antwoorden, jullie hebben dit werk net even wat aangenamer gemaakt. Als je niet weet waar je moet beginnen is het best lastig als je geen enkele programmeer ervaring hebt. Met de tips van hier kan ik nu zelf snel code schrijven (weliswaar lang en omslachtig, maar wel effectief).
Verder vind ik het wel leuk om verder te lezen wat er allemaal mogelijk is. Dus het topic kapen is absoluut geen probleem.

Ik denk wel dat het grootste gedeelte van het ontwerp van de tabel erop zit. Ik heb het nu werkend en kan met 'zoeken' de code eleganter maken, maar dat kost me weer veel tijd. En aangezien ik nu een tabel heb van ongeveer 350 x 75 ben ik nog wel even bezig met alles scoren. En daar wil ik vooral mijn tijd aan besteden. Tegelijkertijd krijg ik een code rechtstreeks aangereikt dus die ga ik morgen proberen te gebruiken. Als dat werkt kan ik andere code ook snel herschrijven.

Specs

Pagina: 1