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.
Regels1. 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 & LinksDe 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 optimaliserenDe 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 DOENMooi, grappig en coolEen 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:
ExcelunusualVerderAlle vorige topics zijn
hier terug te vinden.
Nieuw topic? Haal de
OP uit de wiki[ Bericht 2% gewijzigd door ChevyCaprice op 14-05-2020 19:30:20 ]
Hendrik de Heette heette Hendrik de Heette omdat zijn vader ook Hendrik heette.
-vandaag was 't ook mooi-
Excel; zet het eens in een
pivot table
Ik heb een simpele somproduct-formule:
=SOMPRODUCT(A1:A3;B1:B3)
De waarden A1:A3 --> g - 0 - 1
De waarden B1:B3 --> 1 - 2 - 3
Waarom geeft de somproduct-formule (bij mij) een oplossing en geen '#WAARDE!' ?
Aldus.
Janneke141
Green, green grass of home
quote:
Op woensdag 3 juli 2019 10:01 schreef Z het volgende:Ik heb een simpele somproduct-formule:
=SOMPRODUCT(A1:A3;B1:B3)
De waarden A1:A3 --> g - 0 - 1
De waarden B1:B3 --> 1 - 2 - 3
Waarom geeft de somproduct-formule (bij mij) een oplossing en geen '#WAARDE!' ?
Omdat hij gewoon vermenigvuldigt en optelt wat een getal is, en de rest negeert.
de =SOM van de cellen 1,2,3,4,Q is ook gewoon 10.
Opinion is the medium between knowledge and ignorance (Plato)
Janneke141
Green, green grass of home
quote:
Op woensdag 3 juli 2019 17:35 schreef Z het volgende:[..]
Thnx. Wiskundig lijkt me het niet helemaal juist. Excel gaat er kennelijk iets anders mee om.
Nou ja, het was vroeger anders. In eerdere versies was 1+2+3+4+Q wel degelijk #WAARDE?, maar voor de gemiddelde gebruiker die gewoon niet zo heel erg veel van Excel óf van wiskunde snapt is '10' een wat prettiger uitkomst dan '#WAARDE?'.
Het is vooral lastig wanneer je zo'n optelling maakt en er wordt dan iets niet meegeteld omdat een of andere digibeet '7.40' in een vakje heeft gepropt in plaats van '7,40'. Als je werkt met gegevens van anderen moet je daar eigenlijk wel een check op zetten.
Opinion is the medium between knowledge and ignorance (Plato)
qu63
..de tijd drinkt..
quote:
Op zaterdag 17 augustus 2019 10:26 schreef einschtein het volgende:Dag vrienden!
Vraagje met betrekking tot een vlookup (of iemand moet een ander briljant idee hebben.
1) Ik heb een bestand met 6 tabs, 1 'hoofdtab'' waar de informatie in moet komen en de andere 5 tabs zijn content tabs. Waar de informatie uit komt. In alle tabs staat in principe dezelfde informatie, alleen met andere 'relatienummers'. Het doel is om in mijn hoofdtab de relatienummers van alle tabs terug te krijgen, per kolom. Maar als 1 kolom werkt, dan krijg ik de rest ook prima werkend.
2) In iedere tab heb ik uit samengevoegde cellen een unieke key gemaakt, die zou dus in iedere tab exact hetzelfde moeten zijn voor de specifieke klant. Op basis daarvan doe ik in tab 1 (hoofdtab) , waar ik dan de informatie van een relatie terug moet krijgen.
---
In de hoofdtab heb ik daarom een vlookup gemaakt die als volgt is:
[ code verwijderd ]
Nu krijg ik voor sommige informatie wel een nummer terug, die ook klopt, maar voor sommige ook niet. Terwijl als ik zelf een control-f'je doe op de specifieke tab, ik het dan wel vindt. Iemand enig idee wat hiervan het probleem is, of is er misschien een betere oplossing?
Gracias!
Gebruik je heel misschien een Office-versie van voor 2007?
En hoe zijn je sheets verder opgebouwd? Kan je wellicht wat dummy data uploaden?
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
qu63
..de tijd drinkt..
quote:
Dat is een kleine ramp, want pre-2007 kan maar 65k rijen aan, jij zoekt nu in 115k
https://docs.microsoft.co(...)office-2010/ff700514(v=office.14)#excel-2007-performance-improvements
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
qu63
..de tijd drinkt..
quote:
Op zaterdag 17 augustus 2019 13:48 schreef einschtein het volgende:[..]
Is er nog een manier om dit te omzeilen? Er is geen mogelijkheid tot het schrappen van regels in ieder geval.
Ik zat zelf te denken aan een IF en dan daarin 2 vlooksup verwerkt.
Upgraden naar een nieuwere versie
Als je zeker weet dat er een match is zou je idd ze kunnen combineren
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
quote:
Altijd lastig als een hyperlink niet "werkt" omdat ie afkapt.
de link is:
https://docs.microsoft.com/en-us/previous-versions/office/developer/office-2010/ff700514(v=office.14)#excel-2007-performance-improvements
(zelf maar even aan elkaar koppelen...)
Je kunt beter één kaars opsteken dan duizend maal de duisternis vervloeken.
Janneke141
Green, green grass of home
quote:
Op maandag 2 september 2019 12:54 schreef static het volgende:Ik heb een cel die verschillende (tekstuele) waardes heeft, niet allemaal gelijke lengte, met altijd een ';#' ertussen. Hoe kan ik daar een lijstje van maken die te gebruiken is in een picot-table?
Bijvoorbaald in de cel:
Amsterdam;#Rotterdam;#Maastricht;#Bangkok
=VIND.SPEC vindt bepaalde tekens in een tekenreeks. Daarmee kun je telkens afkappen via =LINKS() of DEEL().
Opinion is the medium between knowledge and ignorance (Plato)
Janneke141
Green, green grass of home
quote:
Op maandag 2 september 2019 19:33 schreef Modus het volgende:Heb een raar probleem, wellicht niet helemaal specifiek Excel specifiek, maar de oorzaak is niet duidelijk nog.
Ik kopieer willekeurige content (paar rijen/kolommen) van een Excel sheet dat ik gebruik. Plak dit in een nieuwe mail in Outlook, paste met source formatting. Ziet er in eerste instantie goed uit.
Ik verstuur het, en bij de ontvanger komen een aantal van die cellen vervolgens leeg binnen.
Bekijk ik die mail vanuit Sent Items, dan zijn die gegevens daar ook verdwenen.
Verder nog iets raars gezien: een cel die begint met "21-7:
random text", kopiëren naar een nieuwe mail, en daar maakt ie van ":7-21 random text"
Dus een deel van de celinhoud wordt omgedraaid. De originele cel is van type General.
Nog nooit gezien, en echt geen idee wat hier aan de hand kan zijn.
Dat laatste zal wel te maken hebben met datumherkenning en het omzetten in de Amerikaanse notatie. Verder geen idee.
Opinion is the medium between knowledge and ignorance (Plato)
Ben er nog niet achter, heb ergens het idee dat het idd eerder met Outlook te maken heeft, hoe die datgene wat ik plak weergeeft.
Als ik hetzelfde stuk in Word plak in een verder totaal standaard leeg document, heb ik het issue nog niet kunnen reproduceren.
quote:
Op donderdag 19 september 2019 13:32 schreef onlogisch het volgende:Hoi,
Ik heb een jaar aan datums naast elkaar staan. Bij iedere datum wil ik een waarde terug krijgen uit een tabel. Vervolgens wil ik mijn code slepen maar dan krijg ik overal hetzelfde resultaat terug, namelijk die van 9-1-2017.
Hoe kan ik zorgen dat er bij de tekst tussen quotjes bij het slepen telkens +1 wordt gedaan?
[ code verwijderd ]
quote:
Op donderdag 19 september 2019 13:32 schreef onlogisch het volgende:Hoi,
Ik heb een jaar aan datums naast elkaar staan. Bij iedere datum wil ik een waarde terug krijgen uit een tabel. Vervolgens wil ik mijn code slepen maar dan krijg ik overal hetzelfde resultaat terug, namelijk die van 9-1-2017.
Hoe kan ik zorgen dat er bij de tekst tussen quotjes bij het slepen telkens +1 wordt gedaan?
[ code verwijderd ]
“9-1-2017” vervangen door een verwijzing naar de cel met die datum in je rij met datums?
Ligt er een beetje aan hoe je de data gestructureerd hebt
You're Fucking Out, I'm Fucking In
=G3*a3+G4*a4
Zo werkt het wel lijkt het, maar is dat niet te vereenvoudigen?
Recordhouder aantal posts op één dag.4045 onlogisch
Ik heb een conversie-probleem met CSV-bestand in Excel.
1,"01-01-2019","XXXXXXXX","18200","-2.34","","","1121212152"
De waarden tussen de komma's wil ik apart in elk kolom scheiden.
Dit lukt via gegevens > 'tekst naar kolommen' en 'uit tekst/CSV', maar het getal met twee cijfers achter de decimalen wordt niet goed weergegeven.
Ik krijg dan ofwel '=2.34 of '2' afhankelijk met welke functie ik de gegevens importeer.
Bij eentje wordt een =-teken toegevoegd en het minteken verdwijnt en bij het ander wordt er afgerond.
Ik dacht dat het aan de taalinstellingen lag, maar dat is het ook niet. Herkent iemand dit probleem?
Als je in een texteditor de komma's vervangt door puntkomma's en daarna punten door komma's en dat bestand opent in Excel, komt het goed.
Aldus.
quote:
Op donderdag 31 oktober 2019 18:06 schreef wiskundenoob het volgende:Ik heb een conversie-probleem met CSV-bestand in Excel.
1,"01-01-2019","XXXXXXXX","18200","-2.34","","","1121212152"
De waarden tussen de komma's wil ik apart in elk kolom scheiden.
Dit lukt via gegevens > 'tekst naar kolommen' en 'uit tekst/CSV', maar het getal met twee cijfers achter de decimalen wordt niet goed weergegeven.
Ik krijg dan ofwel '=2.34 of '2' afhankelijk met welke functie ik de gegevens importeer.
Bij eentje wordt een =-teken toegevoegd en het minteken verdwijnt en bij het ander wordt er afgerond.
Ik dacht dat het aan de taalinstellingen lag, maar dat is het ook niet. Herkent iemand dit probleem?
1,"01-01-2019","XXXXXXXX","18200","-2.34","","","1121212152"
Zet in Sheet1 in cel A1:
1,"01-01-2019","XXXXXXXX","18200","-2.34","","","1121212152"
Zet in Sheet2
In Cel a1:
=FIND(",";Sheet1!A1)
In Cel b1:
=FIND(",";Sheet1!A1;A1+1)
In Cel c1:
=FIND(",";Sheet1!A1;B1+1)
In Cel d1:
=FIND(",";Sheet1!A1;C1+1)
In Cel e1:
=FIND(",";Sheet1!A1;D1+1)
In Cel f1:
=FIND(",";Sheet1!A1;E1+1)
In Cel g1:
=FIND(",";Sheet1!A1;F1+1)
In Cel h1:
=LEN(Sheet1!A1)
Zet in Sheet 3:
In Cel a1:
=LEFT(Sheet1!A1;Sheet2!A1)*1
In Cel b1:
=MID(Sheet1!A1;Sheet2!A1+2;Sheet2!B1-Sheet2!A1-3)*1
Selecteer kolom B en ga via "Format Cells" naar "Date" en kies je favoriete datumnotatie
In Cel c1:
=MID(Sheet1!A1;Sheet2!B1+2;Sheet2!C1-Sheet2!B1-3)
In Cel d1:
=MID(Sheet1!A1;Sheet2!C1+2;Sheet2!D1-Sheet2!C1-3)*1
Via "*1" wordt het een getal ipv tekst. Ik neem aan dat dat de bedoeling is.
In Cel e1:
=SUBSTITUTE(+MID(Sheet1!A1;Sheet2!D1+2;Sheet2!E1-Sheet2!D1-3);".";",")*1
Via "Substitute" wordt de punt vervangen door een komma, en via "*1" wordt het een getal ipv tekst
Als er ook nog sprake is van komma's bij
In Cel f1:
=MID(Sheet1!A1;Sheet2!E1+2;Sheet2!F1-Sheet2!E1-3)
In Cel g1:
=MID(Sheet1!A1;Sheet2!F1+2;Sheet2!G1-Sheet2!F1-3)
In Cel h1:
=MID(Sheet1!A1;Sheet2!G1+2;Sheet2!H1-Sheet2!G1-2)*1
Via "*1" wordt het een getal ipv tekst. Ik neem aan dat dat de bedoeling is.
Je kunt beter één kaars opsteken dan duizend maal de duisternis vervloeken.
In mijn Excel bestand heb ik in een kolom verschillende waardes staan als zijnde platte tekst. Deze waardes heb ik een kleur gegeven met behulp van voorwaardelijk opmaak en vervolgens dit proces opgenomen om het als macro te laten draaien.
Is dit, buiten dat de code niet is geoptimaliseerd, de meeste efficiënte manier?
De code werkt, maar ik ben wat aan het klooien met Excel en probeer te leren om handelingen te automatiseren en te optimaliseren. Heb verder nog zeer weinig kennis maar moet ergens beginnen natuurlijk.