Doorgaan naar hoofdcontent

Posts

Posts uit juni, 2016 weergeven

Excel: lastige berekening gewogen percentage opgelost met matrix functies

Gewogen percentage

Een ogenschijnlijk simpele vraag leidt tot het nodige denkwerk.


Een collega kwam met het volgende simpele tabelletje:

Categorie# Items# Incidentena11b11c51d11e11f13g11h11i31j11
De vraag was hoe het gewogen percentage te berekenen per categorie. Het heeft enige hoofdbrekens gekost maar uiteindelijk hebben we de oplossing.

In dit geval weegt het aantal incidenten zwaarder naarmate er minder items zijn. Zijn er minder items zijn, dan geldt het omgekeerde. Dit betekent dat we het aantal incidenten moeten delen op het aantal items.

Dit leidt in kolom D tot een simpele formule:

=C2/B2

Deze formule kunnen we dan doortrekken naar beneden. Om nu tot een gewogen percentage te komen moeten we de uitkomst delen door de som van alle delingen:

=SOM($C$2:$C$11/$B$2:$B$11)

Voor de juiste berekening moeten we hier een matrix formule van maken. Dat wil zeggen dat we de functie moeten bevestigen door op CTRLSHIFT + ENTER te drukken (in plaats van gewoon op ENTER)

De uiteindelijke formule…

VBA: script om internet explorer pagina's geautomatiseerd om te zetten in PDF's

De aanleiding voor dit script is de behoefte om geautomatiseerd een aantal rapporten van Reporting Services om te zetten naar PDF formaat.

Het onderstaande VBA script is algemeen te gebruiken om een willekeurige internet pagina om te zetten naar PDF. Het kan aangeroepen worden vanuit elk Office pakket. Zelf heb ik het gemaakt in Access.

Voor het omzetten van de internet pagina naar PDF heb ik gebruik gemaakt van de PDFCreator. Dit kan gratis worden gedownload: http://www.pdfforge.org/

De PDFCreator kan als printer worden aangeroepen met VBA. Binnen dit programma kunnen we een aantal zaken instellen zoals de map waarin we de PDF's willen opslaan.


Het VBA script:

'functie nodig om de standaard printer aan te passen
Private Declare Function SetDefaultPrinter Lib "winspool.drv" Alias "SetDefaultPrinterA" (ByVal pszPrinter As String) As Long

Sub printURL()
    Dim objExplorer As Object
    Dim lngQuery As Long 'geef waarde QueryStatusWB
    Dim intTeller As Intege…

Excel: VBA script om wachtwoord te verwijderen

Af en toe krijg ik een vraag om een wachtwoord van een Excel blad te halen. Doodsimpel met VBA. Hier een script dat ik gebruik:

Sub WachtwoordCrack()
    Dim a As Integer, b As Integer, c As Integer, d As Integer, _
    e As Integer, f As Integer, g As Integer, h As Integer, _ 
I As Integer, j As Integer, k, m As Integer
    Dim begin As Date, eind As Date
    Dim duur As String
    Dim objSheet As Worksheet
    begin = TimeValue(Time)
    On Error Resume Next
    For Each objSheet In Application.Worksheets
        For a = 65 To 66: For b = 65 To 66: For c = 65 To 66
            For d = 65 To 66: For e = 65 To 66: For f = 65 To 66
                For g = 65 To 66: For h = 65 To 66: For I = 65 To 66
                    For j = 65 To 66: For k = 65 To 66: For m = 32 To 126
                        ActiveSheet.Unprotect Chr(a) & Chr(b) & _ 
 Chr(c) & Chr(d) & Chr(e) & Chr(f) & _ 
 Chr(g) & Chr(h) & Chr(I) & Chr(j) & Chr(k) & Chr(m)
                        If Ac…