abonnement Unibet Coolblue Bitvavo
  dinsdag 7 mei 2024 @ 18:11:21 #1
346939 Janneke141
Green, green grass of home
pi_213453475




Welkom bij “Het grote Excel vragentopic” waar je terecht kan met vragen over Excel.

In dit topic is het de bedoeling dat we gericht vragen stellen en antwoorden geven op de gestelde vragen. Om alles zo goed mogelijk te laten verlopen zijn er een aantal regels.

Regels
1. Als je een vraag stelt, zet er dan bij welke versie van Excel je hebt en op welke taal hij ingesteld staat.
2. Zet macrocode tussen [ code ] tags
3. Als het “pseudo-code” is, vermeldt dit dan duidelijk
4. Er bestaan geen domme vragen, wel domme antwoorden. Als jouw antwoord niet gaat bijdragen, geef het antwoord dan niet.
5. Dit topic is geen “code-FEBO” waar je half opgewarmde code uit de muur trekt, het is de bedoeling dat je er zelf iets van leert.

Definities
Functie Een interne functie die bij Excel is geleverd.
UDF Een “user definded function”, een zelfgebouwde functie
Macro Een stuk code die opdrachten uitvoert, gebouwd in (meestal) de VBA editor
Add-In Een Excel workbook met VBA-code (of C#, C) die als .xla (of .xll) is opgeslagen, deze is als vaste plug-in in Excel te plaatsen.
Workbook Het excelbestand
Sheet of Worksheet Het tabblad
Form, Formulier, Userform Een Dialoogvenster in VBA gebouwd

Tips & Links
De help functie van excel of visual basic voor excel kan je een eind op weg helpen. (F1)

Het workbook met het FOK!-menu zoals in de banner weergegeven is hier te vinden. Dit menu is naar wens aan te passen. De icoontjes in het menu zijn hier allemaal weergegeven. In dit workbook zijn drie macro's aanwezig:
• Een printertool waarmee je uit meerdere workbooks sheets kan selecteren voor afdrukken
• Een power replace die termen kan wijzigen in meerdere workbooks tegelijk
• Een formule vertaler, de formule in de actieve cel wordt in het engels weergegeven. Je kan ook een engelse formule invoeren die dan in de actieve cel in de geldende taal wordt geplaatst.
De UDF is naar aanleiding van een vraag in topic #29. De functie kan worden aangeroepen door in een cel =FOK() te typen en dan op de Fx te klikken voor uitleg over de variabelen.

De VBA editor bereik je door ALT+F11 in te drukken. Vanaf Excel 2007 is de VBA editor lastiger te vinden. Op deze site wordt uitgelegd hoe je de editor kan activeren.

De interne functies zijn afhankelijk van welke taal jouw Excel draait. Op deze en deze site kun je de formules in verschillende talen vertalen.

Macro uitvoering optimaliseren
De meer uitgebreide macro's kunnen traag worden, ook kan het scherm flikkeren als gevolg van veel "select" acties. Deels kun je dit ondervangen door zo veel mogelijk select acties te vervangen door directe verwijzingen naar cells en deels door een macro-optimalisatie door te voeren. In de onderstaande code is een routine voor macro-optimalisatie en een routine om de optimalisatie weer uit te zetten weergegeven. In de voorbeeld sheet is een uitgebreide versie van MOA en MOU opgenomen.

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Bij macro's die een bepaalde, merkbare, tijd nodig hebben om hun werk te doen is het van belang de gebruiker een idee te geven van wat er gebeurt, zeker met macro-optimalisatie aan kan het lijken alsof Excel is vastgelopen. Je kan bijvoorbeeld de statusbar een waarde geven, met eventueel een percentage van de reeds uitgevoerde code.

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.
Password kwijt?
Soms heb je een worksheeet beveiligd met een password maar ben je die kwijt. Gelukkig is dat geen groot probleem want de interne beveiliging van Excel stelt niet heel veel voor.
Hier vind je meer info en een downloadbare macro die alle interne passwords verwijdert.

DISCLAIMER: Denk erom dat je met het breken van de beveiliging van een excelsheet mogelijk wet- of regelgeving overtreedt. Als de spreadsheet van jezelf is zou het geen probleem moeten zijn.
In andere gevallen: vraag toestemming aan de originele schrijver.
Bij twijfelgevallen: NIET DOEN


Mooi, grappig en cool
Een uitgebreide site met nuttige en minder nuttige excelsheetjes. Van kekke grafieken om je manager of leraar te betoveren via oscillogrammen en simulatoren tot pong voor als het weer een typische vrijdagmiddag is: Excelunusual

Verder
Alle vorige topics zijn hier terug te vinden.

Nieuw topic? Haal de OP uit de wiki
Opinion is the medium between knowledge and ignorance (Plato)
pi_213455626
quote:
0s.gif Op dinsdag 7 mei 2024 12:30 schreef Janneke141 het volgende:
In een tabel moeten gegevens worden ingevoerd. Omdat daar nog wel eens een foutje in gemaakt wordt door onoplettendheid, wil ik een check inbouwen of het klopt.

In kolom A komt een tekst van maximaal 5 karakters.
In kolom B, C en D positieve, gehele getallen. Maar slechts in 1 van de volgende combinaties:

A+B
A+B+D
A+C+D

Alle andere combinaties zijn ongeldig.

Nu kan ik met een heel nest van ALS, EN en OF-functies prima een formule maken die "FOUT" teruggeeft in kolom E als de combinatie in A t/m D niet klopt. Maar kan dit ook subtieler?
Sowieso zou ik er geen mega formule van maken, maar hulpkolommen gebruiken.

Daarnaast zijn de 3 condities die je geeft onvolledig. Je moet namelijk schrijven:
A+B+leegC+leegD
A+B+leegC+D
A+leegB+C+D

De eerst volgende denkstap is dat je in alle 3 de condities wel een A eist, dus eigenlijk komt het er op neer dat A altijd gevuld moet zijn. Daarom kom ik op de volgende vergelijkingen:

check 1 (kolom e): =ALS(EN(ISTEKST(A2);LENGTE(A2)<=5);1;0)
Als A2 leeg is, dan geeft ISTEKST een ONWAAR. Enige waar je niet op controleert is of je tekst van maximaal 5 karakters alleen letters bevatten. Je kan in dit geval ook een WAAR krijgen bij de invoer "1-"

check 2a (kolom f) B+leegC+leegD - immers de A conditie is al getest
=als(EN(B2>0;isleeg(C2)=WAAR;isleeg(D2)=WAAR);1;0)
B2>0 zodat je zeker weet dat het een waarde heeft - de controle voor integers komt verderop
ISLEEG(C2) mag je wat mij betreft ook schrijven als C2="" als dat makkelijker is.

check 2b (kolom g): B+leegC+D
=als(en(B2>0;isleeg(c2);d2>0);1;0)

check 2c (kolom h): leegB+C+D
=als(en(isleeg(b2)=WAAR;c2>0;d2>0);1;0)

check 2d (kolom I): de invoer van b, c en d moeten integers zijn en daarnaast moet alleen 2a, 2b of 2c waar zijn (dus de som van die 3 kolommen moet 1 zijn)
=ALS(EN(INTEGER(B2)=B2;INTEGER(C2)=C2;INTEGER(D2)=D2;F2+G2+H2=1);1;1/0)
ik check of de integer van B2 gelijk is aan B2. Met andere woorden als B2 een tekst, dan roept Excel gelijk dat het een #WAARDE fout is, omdat een tekst niet naar een integer af te ronden is. Is het getal een breuk/decimaal dan is de uitkomst van de vergelijking ONWAAR. Aan het einde van de formule staat voor een ONWAAR uitkomst een fout die ik expres maak, namelijk delen door 0 en dus komt er een #DEEL/0 fout uit.
Wanneer B2 gewoon leeg is levert dat geen fout op want integer van leeg is gewoon leeg.
De vergelijking doen we ook voor C2 en voor D2.
Daarna heb ik de vergelijking staan dat onze 3 vergelijkingen bij elkaar opgeteld gelijk is aan 1. Daardoor is slechts 1 van de 3 casussen juist.

Enige wat deze formule zelf nog nodig heeft is een nesting met ISFOUT zodat je geen #excel!fout melding hebt maar je mooie tekst van "FOUT" en natuurlijk de combinatie met de uitkomst van check 1

[ Bericht 2% gewijzigd door snabbi op 07-05-2024 21:10:42 ]
pi_213459485
btw bovenstaande zou je eigenlijk nog korter kunnen maken omdat de 3 casussen zou je eigenlijk tot 2 kunnen samenvatten, immers
1) A+B+leegC+leegD
2) A+B+leegC+D
3) A+leegB+C+D

1 en 2 samen betekent niet anders dan A+B+leegC -- ongeacht wat D is.
en dan kan je weer checken op een XOR(B+leegC;leegB+C+D)
  woensdag 8 mei 2024 @ 11:36:20 #4
346939 Janneke141
Green, green grass of home
pi_213464164
quote:
0s.gif Op dinsdag 7 mei 2024 22:43 schreef snabbi het volgende:
btw bovenstaande zou je eigenlijk nog korter kunnen maken omdat de 3 casussen zou je eigenlijk tot 2 kunnen samenvatten, immers
1) A+B+leegC+leegD
2) A+B+leegC+D
3) A+leegB+C+D

1 en 2 samen betekent niet anders dan A+B+leegC -- ongeacht wat D is.
en dan kan je weer checken op een XOR(B+leegC;leegB+C+D)
Dank voor je input. Dit heeft me nog even verder aan het denken gezet, en in overleg met degenen die werken met dit bestand ben ik uiteindelijk tot een wat uitgeklede versie gekomen, die voor het dagelijks gebruik voldoet:

Voorwaardelijke opmaak op kolom A gezet voor LENGTE >5

Kolom E: =AANTALARG(A2:C2) en Kolom F =AANTALARG(B2:D2). Voorwaardelijke opmaak als daar 3 uitkomt.
Kolom G: =ALS(EN(C2>0;ISLEEG(D2);"FOUT";"")

Dit ondervangt niet iedere denkbare fout, maar wel alle frequent voorkomende dus dit zou genoeg moeten zijn, en heeft als voordeel dat het overzichtelijk blijft zodat ter plaatse iemand wat kan aanpassen als dat nodig mocht zijn.
Opinion is the medium between knowledge and ignorance (Plato)
  dinsdag 11 juni 2024 @ 14:55:36 #5
201761 phpmystyle
De weg vooruit is de weg terug
pi_213870096
Ik ben even helemaal murw, ik snap niet waarom ik het niet snap/het niet doet. 8)7 8)7 8)7
Versimpeld voorbeeld:

Ik wil dat elke maand de omzet van de nieuwe maand er cumulatief bijgeteld wordt. Zonder dat ik continu de som een kolom hoef op te schuiven.


https://i.ibb.co/KG2CQhs/vraag.png
Man is de baas, vrouw kent haar plaats.
pi_213870845
Gewoon een som over alle 12 de cellen die je mee wil nemen?
stupidity has become as common as common sense was before
pi_213873025
SOM.ALS() zoek je denk ik. Maar is in jouw voorbeeld inderdaad niet nodig.

SPOILER
Om spoilers te kunnen lezen moet je zijn ingelogd. Je moet je daarvoor eerst gratis Registreren. Ook kun je spoilers niet lezen als je een ban hebt.


[ Bericht 30% gewijzigd door Tegan op 11-06-2024 19:52:39 ]
pi_213873577
Sorry voor mij is de vraag te onduidelijk om te kunnen bepalen wat je nodig hebt. Probeer je met het aantal maanden nu weer te geven hoeveel maanden er bijv dit jaar zijn geweest (zodat je bijv vanuit de som ook het gemiddelde kunt bepalen) of wil je bijvoorbeeld met het aantal maanden alleen de som van de laatste zoveel maanden pakken vanaf heden.
pi_214166200
Schijt Excel... Wel een klassiekertje maar krijg het niet voor elkaar.

Ik heb een CSV.
Hierin staan bedragen, bijv. 2.49

En wanneer ik Text to Columns gebruik maakt Excel van die 2.49 "Feb-49". Zelfs als ik vooraf het complete worksheet als Text formatteer blijft ie die 2.49 omzetten naar 01.02.1949 en dan weergeven als Feb-49.

Hoe vorkom ik dit?

Kan moeilijk een spatie of ' in die CSV verwerken.

Edit: haha jezus, MS schrijft zelf al op zijn website dat dit frustrerend kan zijn:

quote:
Microsoft Excel is preprogrammed to make it easier to enter dates. For example, 12/2 changes to 2-Dec. This is very frustrating when you enter something that you don't want changed to a date. Unfortunately there is no way to turn this off. But there are ways to get around it.
https://support.microsoft(...)d1-81e4-72cec11c4ed8

Waarom bouwen ze niet een fucking toggle in zodat je dat kan uitzetten dan.

[ Bericht 11% gewijzigd door Hojdhopper op 05-07-2024 15:00:20 ]
Nederlander in München, met voorliefde voor Taiwan en auti's gonna aut.
pi_214167120
Vroeger selecteerde ik de kolom en met zoeken/vervangen wisselde ik de punt met een komma. Dat lost je probleem op, eventueel format aanpassen

Tegenwoordig gebruik ik power query (tab 'data' en dan 'get data') en power query raad ik iedereen aan als je hetzelfde soort bestand of persoonlijke wijzigingen regelmatig terugkeren
pi_214167555
quote:
0s.gif Op vrijdag 5 juli 2024 14:53 schreef Hojdhopper het volgende:
Schijt Excel... Wel een klassiekertje maar krijg het niet voor elkaar.

Ik heb een CSV.
Hierin staan bedragen, bijv. 2.49

En wanneer ik Text to Columns gebruik maakt Excel van die 2.49 "Feb-49". Zelfs als ik vooraf het complete worksheet als Text formatteer blijft ie die 2.49 omzetten naar 01.02.1949 en dan weergeven als Feb-49.

Hoe vorkom ik dit?

Kan moeilijk een spatie of ' in die CSV verwerken.

Edit: haha jezus, MS schrijft zelf al op zijn website dat dit frustrerend kan zijn:
[..]
https://support.microsoft(...)d1-81e4-72cec11c4ed8

Waarom bouwen ze niet een fucking toggle in zodat je dat kan uitzetten dan.
Ik vermoed dat je gewoon "dubbel klik" op de CSV doet en dat ie dan Excel voor je opent etc.
Je moet eigenlijk gewoon vanuit een lege Excel starten en dan via de Ribbon "Data" een import doen. Zodat je netjes je data format kan opgeven ipv dat ie de gok maakt bij het openen. Wanneer je al bij de stap zit van Text to Column zit je namelijk 1 stap te ver in het proces. Dan is je data al ingeladen en ga je vanaf dat moment de data verder bewerken. Je moet zorgen dat het inladen juist plaatsvindt.

De genoemde Power Query is in feite dezelfde stap.
  zondag 7 juli 2024 @ 11:16:27 #12
346939 Janneke141
Green, green grass of home
pi_214195387
Over gegevensverwerking...

Ik had een tabel. Kolom of twintig, rijtje of 70.000. De tabel wordt nog verder aangevuld met meer gegevens, maar er zat meer in dan we nodig bleken te hebben dus er moesten ongeveer 30.000 gefilterde rijen uit.

Tabel geselecteerd, via Gegevens > Van Tabel/bereik netjes geselecteerd wat we nodig hadden en klaar. In de oorspronkelijke tabel zaten een paar kolommen met vrij eenvoudige zoek- en rekenformules dus die er even opnieuw ingezet, koppeling met de oorspronkelijke tabel verwijderd en verder met uw leven.

Maar er gaat dus één ding mis: als we in de nieuwe tabel rijen invoegen, worden de formules niet automatisch naar de nieuwe regels gekopieerd. Iemand een idee waarom dat is, of beter: hoe we dat oplossen?
Opinion is the medium between knowledge and ignorance (Plato)
pi_214197670
quote:
0s.gif Op zondag 7 juli 2024 11:16 schreef Janneke141 het volgende:
Maar er gaat dus één ding mis: als we in de nieuwe tabel rijen invoegen, worden de formules niet automatisch naar de nieuwe regels gekopieerd. Iemand een idee waarom dat is, of beter: hoe we dat oplossen?
Ik herken het probleem, maar weet de oorzaak niet. Soms lijkt Excel bij het schrijven in de eerst volgende regel onder je tabel (waarbij hij automatisch de dimensies van je tabel aanpast) wel een autofill te gebruiken en soms niet.

Wel kan ik een onderscheid maken in 2 typen formules. Dus wanneer je bijvoorbeeld een simpele formule hebt als KolomC-KolomB, dan kan je gebruik maken van =[@naam_kolom_C]-[@naam_kolom_B] ipv =C2-B2
Door de notatie [kolomnaam] blijft de formule in mijn ervaring wel in de cache zitten.

Hier wordt overigens nog een antwoord gegeven over dat je de formules opnieuw zou moeten invoeren om deze weer in het geheugen te krijgen, maar ik krijg het zelf niet aan het werk: https://www.reddit.com/r/(...)is_not_copying_when/
pi_214207054
quote:
1s.gif Op vrijdag 5 juli 2024 16:14 schreef opgebaarde het volgende:
Vroeger selecteerde ik de kolom en met zoeken/vervangen wisselde ik de punt met een komma. Dat lost je probleem op, eventueel format aanpassen
Hm, dat lost het helaas ook niet op omdat de CSV een komma als delimiter heeft. Heb nog andere tekens geprobeerd, dan text to column en dan later nog eens zoeken/vervangen, maar ook dat werkt niet consequent.

quote:
Tegenwoordig gebruik ik power query (tab 'data' en dan 'get data') en power query raad ik iedereen aan als je hetzelfde soort bestand of persoonlijke wijzigingen regelmatig terugkeren
en

quote:
0s.gif Op vrijdag 5 juli 2024 16:49 schreef snabbi het volgende:

[..]
Ik vermoed dat je gewoon "dubbel klik" op de CSV doet en dat ie dan Excel voor je opent etc.
Je moet eigenlijk gewoon vanuit een lege Excel starten en dan via de Ribbon "Data" een import doen. Zodat je netjes je data format kan opgeven ipv dat ie de gok maakt bij het openen. Wanneer je al bij de stap zit van Text to Column zit je namelijk 1 stap te ver in het proces. Dan is je data al ingeladen en ga je vanaf dat moment de data verder bewerken. Je moet zorgen dat het inladen juist plaatsvindt.

De genoemde Power Query is in feite dezelfde stap.
Ohhh, daar heb ik niet aan gedacht. Dat ga ik vandaag even proberen (laatste keer dat ik met power query heb gewerkt was een jaar of 7 geleden :D ).

Bedankt!
Nederlander in München, met voorliefde voor Taiwan en auti's gonna aut.
pi_214208212
R heeft dat wel aardig opgelost vind ik altijd: read. csv() reads in CSV files where values are comma separated. read. csv2() reads in CSV files where values are semicolon separated. Wegscrijven kan ujiteraard ook.
Aldus.
pi_214230472
Hoe kun je ING afschriften in Excel laden?

Ik denk dat ik dan de komma gescheiden bestand moet downloaden vanaf mijn rekening?
pi_214231478
quote:
0s.gif Op woensdag 10 juli 2024 01:04 schreef Gunnter het volgende:
Hoe kun je ING afschriften in Excel laden?

Ik denk dat ik dan de komma gescheiden bestand moet downloaden vanaf mijn rekening?
Als je een aparte map maakt voor je afschriften kun je met Power Query deze combineren en inlezen in Excel.

Gegevens > Gegevens ophalen > uit bestand > uit map

Je hoeft dit dan maar 1x in te stellen en op het moment dat je een nieuw afschrift downloadt zet je deze ook in de map. Wanneer je dan in Excel op vernieuwen klikt worden alle gegevens uit het nieuwe afschrift automatisch ingelezen.

Zie ook:
https://support.microsoft(...)6b-8c78-6a00041c90e4
pi_215025996
Iemand een ideetje

ik heb een aantal cellen (A3:A99) waarin ik een waarde zet, die laat ik groen kleuren dmv voorwaardelijke opmaak.
Nu zou ik willen dat die cellen (A3:A99) rood kleuren wanneer cel A1 de waarde van A2 overschrijdt.
pi_215026085
Lukt het niet als je gewoon een regel toevoegt? =A$1>A$2 dan rood.
Aldus.
pi_215026181
quote:
2s.gif Op donderdag 19 september 2024 08:56 schreef Z het volgende:
Lukt het niet als je gewoon een regel toevoegt? =A$1>A$2 dan rood.
ik heb het mss verkeerd verwoord



eerste kolom geeft het begrote aantal uren aan, tweede kolom het totaal aantal effectieve uren.
als kolom 2 groter is dan kolom 1 dan wordt dat rood.

ik wil graag dat wanneer ik in de rijen een aantal uren ingeef die cel groen is. (=OK)
maar dat wanneer kolom 2 rood kleurt de cellen daarna rood gaan kleuren (dus groen tot max, daarna rood)
pi_215026516
Buiten beeld extra kolommen toevoegen met in elke kolom een som. Dus bijv in kolom hulp AB een som van A:B, in kolom AC een som A:C en in kolom AD een som A:D etc

Daarna in de cellen waar jij je uren invult een voorwaardelijke opmaak maken met een verwijzing naar de bijbehorende hulpkolom, als in de hulpkolom de som hoger is dan in A dan opmaak rood


[ Bericht 2% gewijzigd door opgebaarde op 19-09-2024 11:05:01 ]
pi_215027129
Negeer bovenstaande.

Selecteer de cellen waar je de uren invult. In dit geval D4 tm oneindig.
Ga naar voorwaardelijke opmaak, kies formule en voer in: =EN(SOM($D4:D4)<=$C4;D4<>"") en kies als opmaak groen
Ga daarna nog een keer naar voorwaardelijke opmaak en voer de formule =EN(SOM($D4:D4)>$C4;D4<>"") in met als opmaak rood. En dan is de cel rood als je daar uren invult en je overschrijdt budget

  donderdag 19 september 2024 @ 18:25:27 #23
62215 qu63
..de tijd drinkt..
pi_215032361
quote:
0s.gif Op donderdag 19 september 2024 11:04 schreef opgebaarde het volgende:
Negeer bovenstaande.

Selecteer de cellen waar je de uren invult. In dit geval D4 tm oneindig.
Ga naar voorwaardelijke opmaak, kies formule en voer in: =EN(SOM($D4:D4)<=$C4;D4<>"") en kies als opmaak groen
Ga daarna nog een keer naar voorwaardelijke opmaak en voer de formule =EN(SOM($D4:D4)>$C4;D4<>"") in met als opmaak rood. En dan is de cel rood als je daar uren invult en je overschrijdt budget

[ afbeelding ]
Let wel op de volgorde van je regels (eerst groen, daarna rood) en dat je range in je opmaak niet-absoluut is (dus D4:D999 ipv $D$4:$D$999)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_215042580
quote:
0s.gif Op donderdag 19 september 2024 11:04 schreef opgebaarde het volgende:
Negeer bovenstaande.

Selecteer de cellen waar je de uren invult. In dit geval D4 tm oneindig.
Ga naar voorwaardelijke opmaak, kies formule en voer in: =EN(SOM($D4:D4)<=$C4;D4<>"") en kies als opmaak groen
Ga daarna nog een keer naar voorwaardelijke opmaak en voer de formule =EN(SOM($D4:D4)>$C4;D4<>"") in met als opmaak rood. En dan is de cel rood als je daar uren invult en je overschrijdt budget

[ afbeelding ]
quote:
0s.gif Op donderdag 19 september 2024 18:25 schreef qu63 het volgende:

[..]
Let wel op de volgorde van je regels (eerst groen, daarna rood) en dat je range in je opmaak niet-absoluut is (dus D4:D999 ipv $D$4:$D$999)
super fijn voor jullie meedenken _O_ maar ik doe nog wat verkeerd

[img]https://i.postimg.cc/8z54B4XG/Knipsel.jpg
[/img]
pi_215042587
[quote]0s.gif Op vrijdag 20 september 2024 12:10 schreef mrPanerai het volgende:

[..]
[..]
super fijn voor jullie meedenken _O_ maar ik doe nog wat verkeerd

abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')