Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Calc vraag: if then else  (gelezen 4197 keer)

Offline MKe

  • Lid
Re: Calc vraag: if then else
« Reactie #25 Gepost op: 2023/01/31, 21:41:01 »
Ik sluit me erbij aan om niet hier een onnodige discussie te starten. En de gekozen oplossing is mij ook een gruwel.
Mocht je je nog eens een half uurtje vervelen: ik houd me aanbevolen voor hoe het dan wel zou moeten/kunnen. Ik zie zelf echter niet hoe het anders zou moeten/kunnen, maar ik ben dan ook geen programmeur (al ben ik in een grijs verleden nog wel "opgevoed" met ALGOL 60).
Okay, met hlookup werkt het prima. Ik heb wel de engelse versie van Libre Office, dus je zult de nerderlandse vertaling ff moeten opzoeken.
Ik ga proberen het uit te leggen. Het kan vast nog beter, maar dit kon ik zo in 5 minuten verzinnen.
Ik begin met waarden in rij 2, rij 1 gebruik ik voor de kolom labels.

Rij | Waarde | 0 | 825.46 | 891.48 | 893.98 | 1687.18 | Resultaat
- Je ziet een kolom 'Rij', hier ga ik de rijnummer inzetten. Die heb ik nodig om dynamisch HLOOKUP te kunnen gebruiken. Dit is vast ook anders op te lossen, maar dit is nu ff simpel.
- Kolom B (waarde) bevat voor de demo ff het bedrag waarmee gerekend moet worden.
- Kolom C t/m G zijn de inkomstcategorieen, steeds aangegeven met hun ondergrens, dit is belangrijk voor HLOOKUP. De eerste categorie heet dus 0 (uitgaande dat er geen negatieve bedragen in B2 terecht komen ;) )
- De laatste kolom bevat het resultaat.

Vervolgens begin ik in rij 2 dus met de rijnummer  Onder de verschillende categorieen zet ik de berekenings formule, dus voor C2 is dat '=0.08*B2', voor D2 is dat '=0.057*B2' enzovoort.

Nu de truuk. In H2 komt de volgende formule (Engelse versie!) '=HLOOKUP(B2,$C$1:$G2,A2)'. Deze gebruikt de eerste rij als index, gaat de kolommen af en stopt bij de laatste kolom die lager is dan de waarde in B2. Vervolgens  kijkt hij in de rij aangegeven in A2 (rij 2) in dezelfde kolom welke waarde daar staat.

Het voordeel van dit systeem is naar mijn mening best groot. Als de grenzen van de categorieen moeten veranderen, hoef je alleen de waarden in C1:G1 aan te passen. Verandert de berekening voor een categorie is dat gemakkelijk in de betreffende kolom te doen etc.

Heb je last van de tussenwaarden dan zet je ze ergens anders, een ander tabblad of je verbergt simpelweg kolom A, C:G.

Hoop dat het duidelijk is? Als het moet kan ik je het bestand sturen. Moet natuurlijk wel aangepast worden aan jouw situatie.

Ff als disclaimer, dit is hoe ik het zou doen. Vind je het niets, dan even goede vrienden :) Waarschijnlijk kan het simpeler, ik werk al jaren niet meer met spreadsheets, ik geef de voorkeur aan eigen scripts voor berekeningen, dus ik ben een beetje roestig.
« Laatst bewerkt op: 2023/01/31, 22:24:46 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Re: Calc vraag: if then else
« Reactie #26 Gepost op: 2023/02/01, 17:41:18 »
Dank je Jenske. Die had ik al ontdekt mbv de functie-assistent.
Idd ook een prima optie als het verder gaat dan <>0.
- I ♥ Linux -
Bij irritatie, voeg hier 'partyrabbit' toe -> https://forum.ubuntu-nl.org/index.php?action=profile;area=lists;sa=ignore

Offline ajjp

  • Lid
Re: Calc vraag: if then else
« Reactie #27 Gepost op: 2023/02/01, 19:37:29 »
Eerst @ Jenske, Bedankt! Dit is precies de functie die ik nodig had. Ik wist van het bestaan niet af, en als je niet weet wat je zoekt, is het moeilijk te vinden. Maar deze functie doet precies wat ik wil, zonder geneste ALS'en:
=ALS.VOORWAARDEN(C4<825,46;0,08*C4; (C4>=825,46)EN(C4<891,48);0,057*C4; (C4>=891,48)EN(C4<893,98);0,08*C4-20,47; (C4>=893,98)EN(C4<1687,18);0,08*C4-4,98; C4>=1687,18;0,0517*C4-3,22)
Dan @ Mke, Bedankt voor de moeite die je genomen hebt. Wat je doet is voor mij abracadabra (misschien beter: hogeschool-spreadsheetgebruik), maar ik zal me er nog wel in verdiepen. Maar om eerlijk te zijn, voldoet de functie ALS.VOORWAARDEN prima, en die begrijp ik ook echt. Een groot voordeel boven jouw oplossing is dat de berekening zich in één cel in één en dezelfde rij afspeelt. Belangrijk daar ik voor elke maand een nieuwe rij gebruik.
Mogelijk vind jij nog steeds dat de formule onoverzichtelijk is, en dat is hij ook. Het typewerk is bijna identiek aan de eerder door mij gegeven formule, maar dan zonder genestheid.

Offline MKe

  • Lid
Re: Calc vraag: if then else
« Reactie #28 Gepost op: 2023/02/01, 21:25:17 »
Eerst @ Jenske, Bedankt! Dit is precies de functie die ik nodig had. Ik wist van het bestaan niet af, en als je niet weet wat je zoekt, is het moeilijk te vinden. Maar deze functie doet precies wat ik wil, zonder geneste ALS'en:
=ALS.VOORWAARDEN(C4<825,46;0,08*C4; (C4>=825,46)EN(C4<891,48);0,057*C4; (C4>=891,48)EN(C4<893,98);0,08*C4-20,47; (C4>=893,98)EN(C4<1687,18);0,08*C4-4,98; C4>=1687,18;0,0517*C4-3,22)
Dan @ Mke, Bedankt voor de moeite die je genomen hebt. Wat je doet is voor mij abracadabra (misschien beter: hogeschool-spreadsheetgebruik), maar ik zal me er nog wel in verdiepen. Maar om eerlijk te zijn, voldoet de functie ALS.VOORWAARDEN prima, en die begrijp ik ook echt. Een groot voordeel boven jouw oplossing is dat de berekening zich in één cel in één en dezelfde rij afspeelt. Belangrijk daar ik voor elke maand een nieuwe rij gebruik.
Mogelijk vind jij nog steeds dat de formule onoverzichtelijk is, en dat is hij ook. Het typewerk is bijna identiek aan de eerder door mij gegeven formule, maar dan zonder genestheid.
Prima.
Ik heb het denk ik slecht uitgelegd. Kopieren gaat in mijn oplossing ook en het is helemaal niet zo ingewikkeld als dat het lijkt, zie bijlagen. Voordeel is dat de berekeningen niet in een cel zit, dat is juist het idee.  Daardoor kun je elk onderdeel zien en editen. Maar goed, ieder zijn meug.

Edit: uitgevonden dat screenshot kunnen worden toegevoegd hier op het forum  :D
« Laatst bewerkt op: 2023/02/01, 21:44:28 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline ajjp

  • Lid
Re: Calc vraag: if then else
« Reactie #29 Gepost op: 2023/02/01, 22:31:41 »
@Mke, dank je voor de screenshots. Die maken al meer duidelijk. Ik zie nu ook dat, i.t.t. wat ik eerder dacht, de berekening zich op een rij afspeelt, en dat dus in dat opzicht mijn geopperde bezwaar vervalt. En bij de invoer van 1000 is het resultaat 75,02 correct  :). Ik zie nu ook duidelijk het voordeel: alle voorwaarden zijn "ontkoppeld".
Nu moet ik nog studeren op hoe het echt in elkaar steekt  :(.

Re: Calc vraag: if then else
« Reactie #30 Gepost op: 2023/02/02, 14:30:05 »
Ik wist van het bestaan niet af, en als je niet weet wat je zoekt, is het moeilijk te vinden

Klik eens een keer op de knop van de functie-assistent  ;)
En dubbel-klik dan links in dat rijtje 'Functies' eens een functie aan (bv als.voorwaarden).
De assistent legt uit waar een vakje voor is en wat je er in moet/kunt vullen. Beetje experimenteren, uitproberen, ontdekken, en je komt vanzelf weer wat verder.
« Laatst bewerkt op: 2023/02/02, 14:39:38 door partyrabbit »
- I ♥ Linux -
Bij irritatie, voeg hier 'partyrabbit' toe -> https://forum.ubuntu-nl.org/index.php?action=profile;area=lists;sa=ignore

Re: Calc vraag: if then else
« Reactie #31 Gepost op: 2023/02/02, 14:32:44 »
PS: Bedankt allemaal! Ik steek hier weer e.e.a. van op. Heeft me weer goed verder geholpen. Soms direct, soms met een goede gedachtengang de juiste richting in.

Gezonde discussie = leerzaam voor iedereen  ^-^
« Laatst bewerkt op: 2023/02/02, 14:36:43 door partyrabbit »
- I ♥ Linux -
Bij irritatie, voeg hier 'partyrabbit' toe -> https://forum.ubuntu-nl.org/index.php?action=profile;area=lists;sa=ignore

Offline MKe

  • Lid
Re: Calc vraag: if then else
« Reactie #32 Gepost op: 2023/02/02, 20:07:22 »
@Mke, dank je voor de screenshots. Die maken al meer duidelijk. Ik zie nu ook dat, i.t.t. wat ik eerder dacht, de berekening zich op een rij afspeelt, en dat dus in dat opzicht mijn geopperde bezwaar vervalt. En bij de invoer van 1000 is het resultaat 75,02 correct  :). Ik zie nu ook duidelijk het voordeel: alle voorwaarden zijn "ontkoppeld".
Nu moet ik nog studeren op hoe het echt in elkaar steekt  :(.
idd. Ik probeerde het uit te leggen in woorden, maar waarschijnlijk maakt het dat verwarrend. Ik hoop dat mijn eerdere uitleg duidelijker wordt nu je de screenshots erbij ziet.

Nogmaals, gebruik wat je nodig hebt en waar je je comfortabel bij voelt. Waarschijnlijk kan het nog wel beter, wat ik hier doe. Mijn ervaring is van lang geleden en voornamelijk met Excel (of eerder zelfs Lotus123)  en niet localc. Maar ik probeerde te laten zien wat de werkwijze van de professionele spreadsheet gebruikers is als ze een dergelijk probleem aanpakken.
Ik hoop dat jij en/of iemand anders hier wat aan hebt.

Offline ajjp

  • Lid
Re: Calc vraag: if then else
« Reactie #33 Gepost op: 2023/02/07, 12:26:56 »
@Mke, Ik snap het nu! Met een kleine aanpassing van jouw formule -ik moest ook de regelnummers van de matrix vastzetten- kan ik jouw suggestie nu gebruiken om van meerdere maanden met elk een andere 'waarde' het juiste 'resultaat' te krijgen:
=HORIZ.ZOEKEN(C2;$D$1:$H$7;B2) Zie ook de bijlage.
Nogmaals bedankt; weer wat bijgeleerd.



Offline MKe

  • Lid
Re: Calc vraag: if then else
« Reactie #34 Gepost op: 2023/02/09, 08:49:36 »
Spreadsheet is net als programmeren. In programmeren is de beste manier van structureren om elke functie maar 1 verantwoordelijkheid te geven en meerdere verantwoordelijkheden te spreiden over meerdere functies.  En de beste functies zijn zeer korte functies. Dit geeft je meer vrijheid om onderdelen te testen en helpt enorm bij het debuggen.

Het grappige is dat zo'n simpele regel blijkbaar in de praktijk niet zo eenvoudig is. Ik heb veel code gelezen waar deze regel overtreden wordt. Ik betrap me zelf er ook vaak op dit fout te doen.

De spreadsheet-equivalent van een functie is de code in een cel.

Re: Calc vraag: if then else
« Reactie #35 Gepost op: 2023/02/09, 18:58:41 »
Toch ben ik het daar niet helemaal mee eens. Sorry  :-[
Als je een boekhoudkundige sheet bij houdt werk je inderdaad met tussentijdse inzichten waar je ook veel uit kunt halen. Maar onder aan de streep, in de grotere overzichtelijke totalen, kun je toch vaak niet anders dan met 'niet simpele' formules werken. Simpelweg omdat de 'standaard' berekeningen an sich al ingewikkelder worden.
Ga je dat wel allemaal specificeren dan maak je de boel juist onoverzichtelijker.

Let wel. Ik heb het dan niet over een boodschappen-uitgaven-boekje, maar over een volledig bedrijfsinzichtelijk financieel (budgeterings-) overzicht wat doorlopend gemonitord dient te worden. Juist dan zijn snelle inzichten belangrijk, en die mogen dan niet verdwijnen in onoverzichtelijkheid door teveel informatie.
En dan begin ik nog niet over risico op fouten omdat je te veel voorberekeningen maakt waar in elke voorberekening een fout kan sluipen die in het totaal blijft dooretteren.

Er zit toch net wat meer afstand tussen berekenen en programmeren (ervaring met beiden).
Overigens kom je hetzelfde tegen met berekeningen programmeren. Want je kunt ook niet tig voorberekeningen in een browsergeheugen onthouden of een hash gaan meenemen, of een sql vol plempen met onnodige getallen.

Ik ben het WEL VOLLEDIG met je eens dat je altijd zorg moet dragen dat je later nog steeds begrijpt wat je doet en wat er gebeurd!
« Laatst bewerkt op: 2023/02/09, 19:04:09 door partyrabbit »
- I ♥ Linux -
Bij irritatie, voeg hier 'partyrabbit' toe -> https://forum.ubuntu-nl.org/index.php?action=profile;area=lists;sa=ignore

Offline MKe

  • Lid
Re: Calc vraag: if then else
« Reactie #36 Gepost op: 2023/02/09, 21:28:33 »
Okay, dat is je goed recht. Laatste opmerking die ik hierover wil maken is dat betrouwbaarheid naar mijn mening belangrijker moet zijn en dat een spreadsheet programma naar mijn mening voldoende tools heeft om het overzichtelijk te houden.

Maar zoals ik al zei, als het werkt dan werkt het. Neem de methode die voor jou het beste werkt. Ik heb hier alleen een alternatief gegeven, wat je ermee doet is afhankelijk van je situatie en waar je je comfortabel bij voelt.
« Laatst bewerkt op: 2023/02/09, 21:32:46 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline Jenske

  • Lid
Re: Calc vraag: if then else
« Reactie #37 Gepost op: 2023/02/11, 14:15:24 »
Wat me wél nogal eens sterk stoort bij Nederlandse vertalingen van functies, bij Calc en andere computerprogramma's, is dat het vaak zo goed als onmogelijk is om vlot op basis van een Engelstalige term de Nederlandse term te kennen. Dit is overigens ook zo bij MS Excel.

Zelf probeer ik al mijn computerprogramma's in Engels te laten staan, zodat ik vlotter informatie kan vinden op het wereldwijde web.

Maar soms faalt mijn Engels en wil ik de vraag écht in het Nederlands kunnen stellen en dan is het verdomd lastig dat er soms veel te weinig uitleg staat bij de functies in bv. Calc.

Probeer maar eens uit te geraken aan de uitleg bij ...
  • AFRONDEN.BOVEN.WISK
  • verschil tussen ASELECT en ASELECT.NV
Maar het is véél moeilijker -- zie de originele post van deze draad/thread/vraag/topic -- om iets op te zoeken dat je wel kan beschrijven, maar niet weet hoe de functie juist heet.

Zoek maar eens op hoe je berekeningen kan laten uitvoeren op velden, waarvan er sommige SOMS leeg zijn.

Het zou heel wat helpen mocht er bij élke Nederlandstalige functie bij staan hoe dat in het Engels heet.

En andersom.

Want laat ons eerlijk wezen: in het Engels vind je vééééééééééél meer informatie dan in dat Nederlands van ons.
... Kubuntu 25.04 ... KDE Plasma ... X11 ...
... 32 Gb RAM ... NVidia GeForce RTX 3060 ...

Re: Calc vraag: if then else
« Reactie #38 Gepost op: 2023/02/12, 15:17:15 »
... om het overzichtelijk te houden.
Daar ben ik het juist helemaal mee eens. Waarbij ik opmerk dat soms te veel voorberekeningen/cijfers juist de overzichtelijkheid tegen gaan werken.
- I ♥ Linux -
Bij irritatie, voeg hier 'partyrabbit' toe -> https://forum.ubuntu-nl.org/index.php?action=profile;area=lists;sa=ignore