woensdag 27 september 2017

Excel: labels bij de reeksen in plaats van een legenda

In 2009 al kwam Jon Peltier met idee├źn over het plaatsen van labels bij reeksen in plaats van een legenda. Zie artikel. Mynda Tracey heeft dit verder uitgewerkt. Haar methode is evenwel tamelijk omslachtig.

Vanaf versie 2013 zijn er andere mogelijkheden in Excel. In het geval van labels kun je nu ook de optie kiezen Waarde uit cellen.











In plaats van een bereik kun je dan ook een naam gebruiken die naar een bereik verwijst. Kijk naar het onderstaande voorbeeld.


Ik heb hiervoor de volgende data gebruikt:

Year Series A Series B Series C
2001 100 120 150
2002 150 240 300
2003 300 360 450
2004 350 480 600
2005 500 600 750
2006 550 720 900
2007 700 840 1050
2008 750 960 1200
2009 900 1080 1350
2010 950 1200 1500
2011 1100 1320 1650
2012 1150 1440 1800
2013 1300 1560 1950
2014 1350 1680 2100
2015 1500 1800 2250
2016 1550 1920 2400
2017 1700 2040 2550

Vervolgens heb ik in een blad genaamd legendattheend drie namen gemaakt:

ReeksA:
=VERSCHUIVING(legendattheend!$E$2;0;0;AANTALARG(legendattheend!$B:$B)-2;1);legendattheend!$B$1

ReeksB:
=VERSCHUIVING(legendattheend!$E$2;0;0;AANTALARG(legendattheend!$C:$C)-2;1);legendattheend!$C$1

ReeksA:
=VERSCHUIVING(legendattheend!$E$2;0;0;AANTALARG(legendattheend!$D:$D)-2;1);legendattheend!$D$1

Vervolgens heb ik lijngrafiek gemaakt op basis van de gegevens van de tabel. Bij elk van de lijnen heb ik gekozen voor Gegevenslabelstoevoegen.



Bij de Labelopties heb ik voor alle lijnen Waarde uitgevinkt. Bij Bereik selecteren heb ik respectievelijk ingevuld (de naam van het bestand is ExcelPictogrammen.xlsx):

=ExcelPictogrammen.xlsx!ReeksA
=ExcelPictogrammen.xlsx!ReeksB
=ExcelPictogrammen.xlsx!ReeksC

En de boel werkt. Als ik nu wat waarden in de kolommen wis, komt de grafiek er zo uit te zien:


woensdag 6 september 2017

SQL: Selective joining in the FROM clause

While making  a SQL query I found out that selective joining would be the best solution, but I was not sure about using a CASE WHEN in the FROM clause.

Two simple examples of the tables I used:

tblTermen with some Dutch terms

term
Maat 01
Maat 02
Maat 03
Matrijs

and

tblTermenVertaald with Dutch and English alternatives

nederlands engels
MaatMeasure
Matrix Die
Of course, in the first three cases I only wanted to link the first part of the column form the first table. In the last case all of the field could be used. On the internet I found some indications the CASE WHEN could be used in the FROM clause.

It took a little experimenting but finally I cam up with this:

SELECT term, nederlands, engels
  FROM tblTermen INNER JOIN  tblTermenVertaald ON 
    CASE WHEN CHARINDEX(' ',term)>0 THEN
LEFT(term, CHARINDEX(' ',tblTermen.term)-1)
    ELSE
   tblTermen.term 
    END
    = tblTermenVertaald.nederlands 

and it worked!

term nederlands engels
Maat 01 maat measure
Maat 02 maat measure
Maat 03 maat measure
Matrijs matrijs die