abonnement Unibet Coolblue
pi_128057826


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
If not now, then when.
pi_128057849
quote:
0s.gif Op donderdag 20 juni 2013 15:58 schreef PAAC het volgende:

[..]

Ik heb zojuist een drop down gemaakt dmv een lijst en als er niets in staat kan ik met de formule die ik eerder gaf gewoon een lege cel weergeven. Afhankelijk van wat er in de lijst staat kan ik ook gewoon berekeningen uitvoeren.
Volgens mij heb jij een andere gebruikt dan die van hem. Kun je hem posten?
If not now, then when.
pi_128058609
tvp
pi_128059022
quote:
0s.gif Op donderdag 20 juni 2013 22:35 schreef Yuri_Boyka het volgende:

[..]

Volgens mij heb jij een andere gebruikt dan die van hem. Kun je hem posten?
Wat voor een "andere" bedoel je dan?
pi_128059125
quote:
0s.gif Op donderdag 20 juni 2013 22:54 schreef PAAC het volgende:

[..]

Wat voor een "andere" bedoel je dan?
Geen idee. Ik krijg een fout wanneer ik zijn formule gebruik, dus jij moet wel een andere gebruikt hebben.

Dit is hij nu: =ALS(ISNB(VERT.ZOEKEN(B7;Voedingswaarden;4;0));0;VERT.ZOEKEN(B7;Voedingswaarden;4;0))/100*C7
If not now, then when.
pi_128060595
quote:
0s.gif Op donderdag 20 juni 2013 22:55 schreef Yuri_Boyka het volgende:

[..]

Geen idee. Ik krijg een fout wanneer ik zijn formule gebruik, dus jij moet wel een andere gebruikt hebben.

Dit is hij nu: =ALS(ISNB(VERT.ZOEKEN(B7;Voedingswaarden;4;0));0;VERT.ZOEKEN(B7;Voedingswaarden;4;0))/100*C7
Andere formule dus :) (kon mss ook methode voor lijst aanmaken zijn oid).

Stap voor stap wat we willen doen:
Voorwaarde : "lege lijst cel"
Dan : Result = ""
Anders : Result = Formule

Dit wordt dan (voor rij 7 en bijbehorende kolom "i")
Voorwaarde : B7 = ""
Dan : "" (ofwel lege cel)
Anders : VERT.ZOEKEN(B7;Voedingswaarden;i;0)/100*C7

Bij elkaar wordt dit dan
=Als(B7 = ""; "" ; VERT.ZOEKEN(B7;Voedingswaarden;i;0)/100*C7)
pi_128060835
quote:
0s.gif Op donderdag 20 juni 2013 23:21 schreef PAAC het volgende:

[..]

Andere formule dus :) (kon mss ook methode voor lijst aanmaken zijn oid).

Stap voor stap wat we willen doen:
Voorwaarde : "lege lijst cel"
Dan : Result = ""
Anders : Result = Formule

Dit wordt dan (voor rij 7 en bijbehorende kolom "i")
Voorwaarde : B7 = ""
Dan : "" (ofwel lege cel)
Anders : VERT.ZOEKEN(B7;Voedingswaarden;i;0)/100*C7

Bij elkaar wordt dit dan
=Als(B7 = ""; "" ; VERT.ZOEKEN(B7;Voedingswaarden;i;0)/100*C7)
Hij werkt. Ik moest bij mij alleen de 'i' vervangen door '4'.

Bedankt! :D
If not now, then when.
pi_128061006
quote:
14s.gif Op donderdag 20 juni 2013 23:26 schreef Yuri_Boyka het volgende:

[..]

Hij werkt. Ik moest bij mij alleen de 'i' vervangen door '4'.

Bedankt! :D
Geen probleem :)
Snap je de uitleg er ook bij? (icm wat ik eerder aangaf ook)
pi_128061547
quote:
0s.gif Op donderdag 20 juni 2013 23:29 schreef PAAC het volgende:

[..]

Geen probleem :)
Snap je de uitleg er ook bij? (icm wat ik eerder aangaf ook)
Jup, het is even nadenken hoe het precies in elkaar zit en daarna is het wel duidelijk. ^O^
If not now, then when.
pi_128072207
Ik heb een vraagje..

ik heb een kolom met zo ongeveer 3000 regeltjes. Tussen die 3000 regeltjes zitten een aantal NB/s of DEEL/0's.
Omdat de formule in de kolom MOET blijven staan, kan ik die er dus niet uit halen.

Nu wil ik de som optellen van deze kolommen. Gewoon simpel =som(...). Dit gaat echter niet, omdat er dus NB's etc. tussen staan. Hoe los je dit nu op?

Is er niks om die NB's gewoon over te slaan oid?

Filteren lukt ook niet, want dan neemt die gewoon de waarden mee die uitgefilterd zijn :')
pi_128074556
quote:
0s.gif Op vrijdag 21 juni 2013 10:57 schreef Snoepje5 het volgende:
Ik heb een vraagje..

ik heb een kolom met zo ongeveer 3000 regeltjes. Tussen die 3000 regeltjes zitten een aantal NB/s of DEEL/0's.
Omdat de formule in de kolom MOET blijven staan, kan ik die er dus niet uit halen.

Nu wil ik de som optellen van deze kolommen. Gewoon simpel =som(...). Dit gaat echter niet, omdat er dus NB's etc. tussen staan. Hoe los je dit nu op?

Is er niks om die NB's gewoon over te slaan oid?

Filteren lukt ook niet, want dan neemt die gewoon de waarden mee die uitgefilterd zijn :')
Je kan een extra kolom maken met =iferror(cel,0) die 0 teruggeeft als er een error in de cel staat. Vervolgens kan je de som over deze kolom nemen.
pi_128074665
Je zou ook snel even een kopie van die kolom met alleen de waardes kunnen maken, daarna een sortering op die kolom en de niet bruikbare data eruit donderen.
pi_128076108
Oke, beide tips handig die werken.

Maar helaas is dat niet hoe ik het zou willen zien. Als ik ze als waarden ga plakken dan verwijderd de verwijzing in de kolom, die wil ik er juist in laten staan. Een nieuwe kolom aanmaken is dan misschien maar de enige optie, en die in een apart tabblad zetten!
  vrijdag 21 juni 2013 @ 13:12:22 #14
246304 tdrone
vallende blokjes
pi_128077292
Ik werk met odbc maar wil niet dat iedereen mijn query zomaar kan bewerken aangezien hier gevoelige gegevens in staan elders in de database. als ik het blad beveilig kan de query niet vernieuwd worden..

maar de gegevens die uit de query komen moeten wel vernieuwd worden als de excel file wordt opgestart zonder dat de gebruiker andere gegevens uit de database kan halen. Kan dit?
Wat doe ik hier?
  vrijdag 21 juni 2013 @ 15:00:44 #15
158136 Joooo-pi
Do you want a balloon...
pi_128081659
quote:
0s.gif Op vrijdag 21 juni 2013 13:12 schreef tdrone het volgende:
Ik werk met odbc maar wil niet dat iedereen mijn query zomaar kan bewerken aangezien hier gevoelige gegevens in staan elders in de database. als ik het blad beveilig kan de query niet vernieuwd worden..

maar de gegevens die uit de query komen moeten wel vernieuwd worden als de excel file wordt opgestart zonder dat de gebruiker andere gegevens uit de database kan halen. Kan dit?
Je kunt een macro maken die start bij het openen van de excelfile. Daarin kun je je bladbeveiliging opheffen voor de update en weer inschakelen na de update.

Vervolgens zet je een wachtwoord op je macro.

iets met:
1
2
3
ActiveSheet.Unprotect("wachtwoord")
[update uitvoeren]
ActiveSheet.Protect Password:="wachtwoord"

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 9% gewijzigd door Joooo-pi op 21-06-2013 15:09:42 ]
heitieh
pi_128084770
quote:
0s.gif Op vrijdag 21 juni 2013 12:43 schreef Snoepje5 het volgende:
Oke, beide tips handig die werken.

Maar helaas is dat niet hoe ik het zou willen zien. Als ik ze als waarden ga plakken dan verwijderd de verwijzing in de kolom, die wil ik er juist in laten staan. Een nieuwe kolom aanmaken is dan misschien maar de enige optie, en die in een apart tabblad zetten!
Deze functie overnemen en bevestigen met CTRL+SHIFT+ENTER
=SUM(IF(ISERROR(B1:B24),0,B1:B24))

Of deze als gewone functie (dus gewoon met ENTER)
=SUM(SUMIF(E2:E9,{"<0",">0"}))
Supra Groningam Nihil
Postjubilea: 10.000 15.000 20.000 25.000
Sit jou kop in die koei se kont en wag tot die bul jou kom holnaai
Wat niemand je vertelt over de bioindustrie, geen bloed maar feiten
  zaterdag 22 juni 2013 @ 20:12:20 #17
85514 ralfie
!Yvan eht nioj
pi_128126659
quote:
99s.gif Op vrijdag 21 juni 2013 15:00 schreef Joooo-pi het volgende:

[..]

Je kunt een macro maken die start bij het openen van de excelfile. Daarin kun je je bladbeveiliging opheffen voor de update en weer inschakelen na de update.

Vervolgens zet je een wachtwoord op je macro.

iets met:
[ code verwijderd ]

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.
Ken je deze?
1ActiveSheet.Protect "wachtwoord", UserInterfaceOnly:=True
Kan de gebruiker niks veranderen, maar de macro wel. Super uitvinding. :)
  zaterdag 22 juni 2013 @ 20:20:15 #18
158136 Joooo-pi
Do you want a balloon...
pi_128126950
quote:
Op zaterdag 22 juni 2013 20:12 schreef ralfie het volgende:

[..]

Ken je deze?
[ code verwijderd ]

Kan de gebruiker niks veranderen, maar de macro wel. Super uitvinding. :)
Nee, ken ik niet. Ga wel ff kijken, maar heeft tdrone er wat aan?
heitieh
pi_128146190
Goedemiddag

Ik wil in excel (nl, 2010) een soort persoonlijke exploitatie rekening maken van mijn eigen inkomsten/uitgaven.

Via de site van de abn heb ik een mutatieoverzicht gedownload als excelbestand. Dit tabblad heet 'mutaties'.

Daarnaast heb ik het volgende tabblad: 'exploitatie' aangemaakt. Hierop heb ik horizontaal de maanden jan tm december en verticaal de inkomsten en uitgaven in totaal. Met de sommen.als formule en de voorwaarden >0 en <0 heb ik duidelijk in beeld wat ik per maand ontvang en uitgeef. So far, so good.

Echter, wil ik niet alleen weten hoeveel ik uitgeef, maar ook waaraan ik het uitgeef. Een categorisering in bijvoorbeeld 'supermarkt', 'kleding', 'benzine' etc. Deze categorisering wil ik bij voorkeur niet handmatig doen.

De uitgaven die in mutaties staan hebben veelal een tekstuele omschrijving en veel getallen als betalingskenmerk, datum, tijd etc etc. bijvoorbeeld:
1BEA   NR:K5MX8X   03.01.13/17.59 Jumbo Enschede ENSCHEDE 

nu heb ik op basis van dat stukje tekst in de omschrijving de mutatie gecategoriseerd. Met de formule:
1 =ALS(VIND.SPEC("jumbo";H:H);Supermarkt;0) 
is mij dit gelukt.

Echter, nu begint mijn probleem, aangezien ik niet alleen bij de Jumbo boodschappen doe, maar ook bij de Albert Heijn. Hoe kan ik de formule zo uitbreiden dat bij zowel de zoekterm Jumbo als de zoekterm Albert Heijn de mutatie als supermarkt gecategoriseerd wordt?

om het nog wat spannender te maken: het liefst zet ik op een derde blad een tabel als:

1
2
3
4
5
6
 
   A                   B           C              D
1 supermarkt     Kleding     benzine      salaris
2 Jumbo             Zalando     Shell      Randstad
3 Albert heijn     V&D             BP           Studentenwerk
4 Mitra             Sting                  Payrolling

waarbij excel per kolom bekijkt of de zoekterm in de omschrijving komt en dan de categorie in rij 1 weergeeft.

is dit uberhaupt mogelijk of is er een handigere manier voor?

ps. mocht er een handigere manier zijn ben ik al blij met de functie die ik moet gebruiken, waarschijnlijk kom ik er dan wel uit, en anders vraag ik wel weer.

Alvast bedankt!
  zondag 23 juni 2013 @ 23:02:15 #20
349086 ClapClapYourHands
Gurbansoltanedzhe
pi_128173447
Weet iemand hoe je in een keuzelijst met invoervak een lijstje met macro's kan krijgen? Ik heb de macro's al gemaakt maar ik wil ze via een drop down menu laten activeren.
  zondag 23 juni 2013 @ 23:48:26 #21
62215 qu63
..de tijd drinkt..
pi_128175677
quote:
0s.gif Op zondag 23 juni 2013 23:02 schreef ClapClapYourHands het volgende:
Weet iemand hoe je in een keuzelijst met invoervak een lijstje met macro's kan krijgen? Ik heb de macro's al gemaakt maar ik wil ze via een drop down menu laten activeren.
Misschien via deze weg? http://www.ozgrid.com/VBA/run-macros-change.htm
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
  zondag 23 juni 2013 @ 23:50:55 #22
62215 qu63
..de tijd drinkt..
pi_128175817
quote:
0s.gif Op zondag 23 juni 2013 13:06 schreef Holenbeer het volgende:
Goedemiddag

Ik wil in excel (nl, 2010) een soort persoonlijke exploitatie rekening maken van mijn eigen inkomsten/uitgaven.

Via de site van de abn heb ik een mutatieoverzicht gedownload als excelbestand. Dit tabblad heet 'mutaties'.

Daarnaast heb ik het volgende tabblad: 'exploitatie' aangemaakt. Hierop heb ik horizontaal de maanden jan tm december en verticaal de inkomsten en uitgaven in totaal. Met de sommen.als formule en de voorwaarden >0 en <0 heb ik duidelijk in beeld wat ik per maand ontvang en uitgeef. So far, so good.

Echter, wil ik niet alleen weten hoeveel ik uitgeef, maar ook waaraan ik het uitgeef. Een categorisering in bijvoorbeeld 'supermarkt', 'kleding', 'benzine' etc. Deze categorisering wil ik bij voorkeur niet handmatig doen.

De uitgaven die in mutaties staan hebben veelal een tekstuele omschrijving en veel getallen als betalingskenmerk, datum, tijd etc etc. bijvoorbeeld:
[ code verwijderd ]

nu heb ik op basis van dat stukje tekst in de omschrijving de mutatie gecategoriseerd. Met de formule:
[ code verwijderd ]

is mij dit gelukt.

Echter, nu begint mijn probleem, aangezien ik niet alleen bij de Jumbo boodschappen doe, maar ook bij de Albert Heijn. Hoe kan ik de formule zo uitbreiden dat bij zowel de zoekterm Jumbo als de zoekterm Albert Heijn de mutatie als supermarkt gecategoriseerd wordt?

om het nog wat spannender te maken: het liefst zet ik op een derde blad een tabel als:
[ code verwijderd ]

waarbij excel per kolom bekijkt of de zoekterm in de omschrijving komt en dan de categorie in rij 1 weergeeft.

is dit uberhaupt mogelijk of is er een handigere manier voor?
Ja, het is mogelijk.
Je zou bijvoorbeeld je formule aan kunnen passen naar
1=ALS(OF(VIND.SPEC("jumbo";H:H);VIND.SPEC"ah";H:H);VIND.SPEC("andere supermarkt");Supermarkt;0) 
En dan aanvullen met andere supermarkten :)
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
pi_128176120
quote:
0s.gif Op zondag 23 juni 2013 13:06 schreef Holenbeer het volgende:
waarbij excel per kolom bekijkt of de zoekterm in de omschrijving komt en dan de categorie in rij 1 weergeeft.

is dit uberhaupt mogelijk of is er een handigere manier voor?

ps. mocht er een handigere manier zijn ben ik al blij met de functie die ik moet gebruiken, waarschijnlijk kom ik er dan wel uit, en anders vraag ik wel weer.

Alvast bedankt!
Vermoedelijk is het makkelijker om gebruik te maken van de tegenrekening die je krijgt van de boeking. De tegenrekening even koppelen aan je categorie en door middel van een vertikaal zoekopdrachtje kan je dit zelf opbouwen.
  maandag 24 juni 2013 @ 08:32:51 #24
158136 Joooo-pi
Do you want a balloon...
pi_128182924
quote:
0s.gif Op zondag 23 juni 2013 23:50 schreef qu63 het volgende:

[..]

Ja, het is mogelijk.
Je zou bijvoorbeeld je formule aan kunnen passen naar
[ code verwijderd ]

En dan aanvullen met andere supermarkten :)
tsja, ik zat ook al te denken aan zoiets, maar echt fraai is het niet, imo.

Misschien is het handiger om gewoon in tabblad 3 alles onder elkaar te zetten in twee kolommen. Kolom 1 = categorie, Kolom 2 = zoekterm. En dan een gewone vlookup gebruiken

dus:
Supermarkt - Jumbo
Supermarkt - C1000
Brandstof - Tinq
Supermarkt - Deen
Brandstof - Q8
... - ...

enz.

Je typt iets vaker de categorie in.
heitieh
  maandag 24 juni 2013 @ 12:56:04 #25
62215 qu63
..de tijd drinkt..
pi_128189703
quote:
0s.gif Op zondag 23 juni 2013 23:56 schreef snabbi het volgende:

[..]

Vermoedelijk is het makkelijker om gebruik te maken van de tegenrekening die je krijgt van de boeking. De tegenrekening even koppelen aan je categorie en door middel van een vertikaal zoekopdrachtje kan je dit zelf opbouwen.
Als je het altijd alleen bij die 3 supermarkten/locaties houdt wel ja, anders mag je voor iedere super weer een nieuwe tegenrekening invullen..
It's Time To Shine
[i]What would life be like without rhethorical questions?[/i]
abonnement Unibet Coolblue
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')