vrijdag 30 oktober 2015

Excel: Which Graph To Show?

The question is how can somebody just pick the graph he/she wants to see without seeing the other graphs? Nice to have for your Excel dashboard.

Something like this:


How did I do this?

I created one sheet called graphs with three different graphs. Then I created three names One, Two and Three referring to a range containing the graphs One, Two and Three respectively. Like this:

one = graphs!$G$1:$O$16
two = graphs!$G$17:$O$33
three = graphs!$G$33:$O$48

On a second sheet called whichgraphtoshow in cell A2 I then created a picking list containing one, two and three.

Yet another name refers to this cell:

graphLookup =INDIRECT(whichgraphtoshow!$A$2)

On the same sheet I then inserted a picture. The picture refers to the name graphLookup

And it is all working!

You can download ExcelWhichGraphToShow.xlsx via:

https://drive.google.com/folderview?id=0B7HgkOwFZtdZVmhRQUZFM28yc1U&usp=sharing

donderdag 22 oktober 2015

Excel: performance of hoe optimaliseer ik grote spreadsheets II

Excel en performance

Ik krijg de laatste tijd herhaaldelijk verzoeken om een blik te werpen op Excel spreadsheets die te traag en onhandelbaar zijn geworden. Men vraagt mijn dan als VBA expert, maar is VBA altijd de (enige) oorzaak?

Laten we eens de factoren op een rijtje zetten die invloed hebben op de snelheid.

Grootte van het bestand.

Dit is misschien wel de belangrijkste factor. Zodra een bestand erg groot wordt, kan het opslaan en openen erg lang gaan duren. Het XML formaat heeft bestanden weliswaar flink verkleind, maar tegelijkertijd is het grotere aantal rijen en kolommen ook een uitnodiging geweest nog veel meer gegevens op ter nemen.

Herkomst van de data.

Data kunnen verschillende herkomst hebben, bijvoorbeeld:

  • In Excel zelf; voorbeeld 121.317 regels uit SalesOrderDetail van AdventureWorks: grootte 9.625 kb.
  • Koppeling met een ander Excel bestand.
  • Via Microsoft Query en ODBC; voorbeeld 121.317 regels uit SalesOrderDetail van AdventureWorks: grootte 9.414 kb.
  • Via Power Query en SQL Server; voorbeeld 121.317 regels uit SalesOrderDetail van AdventureWorks: grootte 9.536 kb.
Wat betreft grootte ontloopt het elkaar dus niet zo veel. Wel zijn data die via externe verbindingen binnenkomen zo te filteren dat Excel ook alleen die data bevat die uitgefilterd zijn. SalesOrderDetail gefilterd op ProductId 777 is nog maar 35 kb groot. Via een Excel eigen filter filteren maakt voor de bestandsgrootte vrijwel niets uit.

Excel formules.

Er is een aantoonbaar verschil in performance tussen verschillende functies die wel het zelfde resultaat hebben. Zo is de functie INDEX sneller dan VERT.ZOEKEN. Kunnen we het een en ander testen? Jawel! De voorbeelden zijn op snelheid van uitvoering te vergelijken met behulp van VBA routines. 

Excel draaitabellen

Draaitabellen kunnen een Excel bestand veel groter en trager maken. Een simpel voorbeeld met een draaitabel op basis van de tabellen Product en
SalesOrderDetail uit Adventureworks. Direct in Excel: grootte bijna 17 MB. Via PowerPivot: iets meer dan 7 MB.

VBA routines.

Veel VBA maakt een bestand niet veel groter en trager. Wel maakt het uit wat er met VBA gedaan wordt. Zo maakt het wat betreft snelheid enorm uit of we een kolom met getallen via een VBA loop procedure optellen of dat we daarvoor de reguliere Excel functie SOM gebruiken. Zo kan het binnen VBA veel schelen via WorksheetFunction een beroep te doen op reguliere Excel functies. Ook kunnen we de werklast slim verdelen: het rekenwerk in Excel zelf en de variatie van bijvoorbeeld parameters met VBA.

Bestandsformaat.

Excel kent de formaten XLSX, XLSM en XLSB. Ze zijn vergelijkbaar in die zin dat ze allemaal ZIP bestanden zijn. We kunnen de inhoud zichtbaar maken als we de extensie vervangen door ZIP en ze vervolgens openen. XLSB is niet XML-gebaseerd based maar in een binair formaat. En dat is vooral voordelig als je met grote bestanden werkt. 

XLSX en XLSM bestanden laden vier keer langzamer dan XLSB en het opslaan ervan durt twee keer zo lang. Het uiteindelijk bestand is anderhalf keer zo groot.  Getest met een Excel bestand met tienduizend rijen en duizend kolommen met simpele formules.

Bij een Excel bestand dat zijn gegevens via PowerPivot ophaalt, kon ik geen verschil zien tussen opslag in XLSB of XLSX.

Het enige echte nadeel van het XLSB formaat is compatibiliteit: als er gewerkt met software die XML nodig heeft in plaats van binair.

Alle formaten ondersteunen dezelfde functionaliteit.

Tips.

  • Volgens mij is het belangrijkste punt bij Excel dat je de inhoud beperkt moet houden. Doe je dat niet, dan kan zeker in combinatie met bepaalde berekeningen, kunnen de bestanden heel erg traag worden.
  • Als je gebruik maakt van externe gegevens uit een database, laat dan - in het geval grote hoeveelheden data - de berekeningen zoveel mogelijk in de database doen en niet in Excel zelf. Als we Excel zelf de berekeningen uit laten voeren zal bij elke verandering vaak heel veel formules opnieuw doorgerekend moeten worden.
  • Draaitabellen kunnen wel tot honderd keer of meer sneller rekenen dan functies als SOMMEN.ALS.
  • Gebruik PowerPivot voor draaitabellen. Uiteraard zorgt dit instrument ervoor dat de data in de database blijven. De draaitabel maakt het Excel bestand niet veel groter. 
  • Een normale draaitabel maakt het bestand wel veel groter maar dit is aan te passen door bij de Optie voor draaitabel de optie Brongegevens bij bestand opslaan uit te zetten.
  • Opslag als binair bestand, XLSB, verkleint grote bestanden aanzienlijk en maakt laad- en opslagtijd korter. 
Voor verder Excel tips klik hier.

dinsdag 6 oktober 2015

DATA: VAN DATA NAAR RAPPORT: EEN CHECKLIST

1 Inleiding

Als we een rapport moeten maken, ligt de focus vaak vooral op de uitkomst van de analyse en de presentatie daarvan. Allerlei andere zaken die noodzakelijk zijn voor een rapport, komen vaak gedurende het maakproces aan de orde. We gaan deze zaken hier onder de loep nemen.

2 De toegankelijkheid van de data

Het is een basisvoorwaarde voor een rapport dat de data beschikbaar en analyseerbaar zijn.

Waar komen de data vandaan?
Data kunnen uit diverse bronnen komen. Ze kunnen opgeslagen liggen in databases, in losse bestanden zoals Excel en bestanden in CSV formaat, van webpagina’s komen of zelfs los verzameld moeten worden.

Hebben we directe toegang tot de data? 
Data kunnen opgeslagen liggen in databases van derden waarbij het de vraag is of we rechtstreeks bij deze data kunnen of dat het indirect moet gebeuren via koppelingen (zoals ODBC) of exportbestanden (zoals CSV, EXCEL).

Hebben we een overzicht van de structuur van de data?
Als data niet direct toegankelijk zijn, bijvoorbeeld doordat ze opgeslagen liggen in databases van derden, is het de vraag of we in beeld hebben hoe deze data gemodelleerd zijn. Veel leveranciers van databases willen bijvoorbeeld geen relatieschema verstrekken. Een relatieschema geeft een beeld van de inhoud van tabellen en de relaties tussen de tabellen.

Hieronder een simpel voorbeeld van een relatieschema.


Hebben de data het juiste formaat?
Als we bijvoorbeeld berekeningen of grafieken willen maken, moeten de data dat wel mogelijk maken.

3 Karakter van rapporten: ad hoc vs. statisch

Bij rapporten is het erg belangrijk welke eisen er aan de inhoud wordt gesteld.

Is de relatie tussen data en weergave betrekkelijk statisch? 
Denk bijvoorbeeld aan facturen. Een factuur kan weliswaar naar data verschillen maar de weergave van deze data is behoorlijk eenvormig.

Is de relatie tussen data en weergave betrekkelijk dynamisch? 
Denk bijvoorbeeld aan draaitabellen en draaigrafieken waarbij steeds andere data tegen elkaar uitgezet moeten kunnen worden.

Is de weergave sterk geparametriseerd?
Het kan van belang zijn veel verschillende filters in te kunnen stellen. Veel keuzemogelijkheden maken het mogelijk data vanuit verschillende perspectieven te bekijken. Ook kan het van belang zijn delen van het rapport facultatief zichtbaar of onzichtbaar te kunnen maken.

4 Weergave van rapporten

Bij rapporten kan de focus vooral liggen de inhoud maar ook de vormgeving kan belangrijk zijn?

Willen we de data cijfermatig weergeven en/of grafisch?
Is de vormgeving van een rapport van belang?

5 Verspreiding van rapporten

Bij rapporten is het van belang dat anderen deze kunnen inzien. De vraag is natuurlijk hoe dat inzien geregeld moet worden.

Moet een rapport bijvoorbeeld op gezette tijden verspreid worden?
We willen natuurlijk voorkomen dat we handmatig rapporten moeten verspreiden.

Welk medium hebben we nodig voor elk rapport?
We kunnen dan denken aan papier, PDF en web formaat.

Moet een rapport algemeen beschikbaar zijn?
Als een rapport steeds ter inzage moet zijn, moeten we hier voor zorgen door ze bijvoorbeeld via het web beschikbaar te maken.

Moet een rapport extern verspreid worden?
Dat stelt andere eisen aan de vormgeving.

6 Toegankelijkheid van rapporten

Het is niet vanzelfsprekend dat elk rapport voor iedereen toegankelijk is.

Moet elk rapport voor iedereen toegankelijk zijn?
We kunnen dan denken aan een indeling door middel van een inlogprocedure en leesrechten.

7 Onderhoudbaarheid van rapporten

Als rapporten klaar zijn is de mate van onderhoudbaarheid van belang. Statische rapporten zullen minder onderhoud vergen dan ad hoc rapporten.

Hoe is het onderhoud van elk geregeld? Extern of intern?
Hebben rapporten een complexe vormgeving?

8 Documentatie van het rapport

Rapporten dienen gedocumenteerd te zijn.

In welke informatiebehoefte voorziet het rapport?
Uit welke bronnen komen de data?
Welke data zijn er gebruikt?
Hoe zijn de data eventueel bewerkt?
Denk hier aan allerlei berekeningen.

Is er een beschrijving van de opbouw van het rapport?

9 Welke tools?

Er is in de markt diverse software beschikbaar om rapporten te maken. We noemen een aantal belangrijke: Crystal Reports, Cognos, Business Objects, Reporting Services/Report Builder, Qlikview, MS Excel en MS Access.

Het is lastig een nuchtere en objectieve beoordeling te geven van deze instrumenten. In feite is het veel belangrijker voor de gewenste rapporten de punten 2 tot en met 8 in kaart te brengen. Daarna kunnen we veel beter vaststellen welke instrumenten zich het beste lenen voor de gestelde eisen.