• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Facturatiesysteem

Status
Niet open voor verdere reacties.

Vitasyn

Gebruiker
Lid geworden
6 dec 2008
Berichten
9
Hi allen,

Ik wil een facturatiesysteem opzetten waarbij ik enkel de klantnummer en maand van facturatie moet invoeren en dat excel de rest invult.
In de bijlage de file die ik voorlopig heb gemaakt. Alles wat geel gemarkeerd staat zou nog geautomatiseerd moeten worden.
Het is de bedoeling dat er een factuur per maand per klant opgemaakt wordt.
Factuurnummers zijn gewoon jj0000 dus je kan per jaar max 9999 facturen opstellen.

Ik heb reeds heel wat functies geprobeerd en gecombineerd, maar heb nog geen foutloos systeem gevonden.

Is er iemand die me op de juiste weg kan zetten?
 

Bijlagen

Hoi Vitasyn,

Je zult je moeten verdiepen in matrix-formules, in dit forum staat er al een heleboel over.

De gegevens van het klantnummer zijn eenvoudig te verkrijgen met de formule:
Facturen!D4: =als(aantal.als(Klanten!$A$2:$A$99;$D$14)=0;"";index(Klanten!$C$2:$C$99;vergelijken($D$14;Klanten!$A$2:$A$99;0)))
Deze formule zoekt het adres (kolom C) van de klant in het blad Klanten
De andere invoergegevens moet je zelf doen.

Voor de facturen in een bepaalde maand van een bepaalde leverancier daar heb je de matrix-formule voor nodig.
Als je de kolom G bekijkt dan staan daar de klantnummers in. Kijk naar het resultaat van de formule:
=(Registratie!$G$3:$G$9=$K$1)*1 => {0\1\0\0\0\0\0\0\0\1\0\0\0\0\0\0\0} (gebruik F2 en daarna F9 voor het resultaat)
Oftewel alleen het tweede klantnummer uit de reeks is gelijk aan het klantnummer van $D$14.
We breiden de formule uit:
=(Registratie!$G$3:$G$19=$K$1)*RIJ(Registratie!$G$3:$G$19) => {0\4\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0}
We hebben nu het rijnummer van alle (in dit geval slechts 2) klanten die voldoen aan $D$14.
Uit deze lijst willen we nu de facturen van de maand september halen (maand staat in K2).
=(MAAND(Registratie!$A$3:$A$19)=$K$2)*(Registratie!$G$3:$G$19=$K$1)*RIJ(Registratie!$G$3:$G$19) => {0\4\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0}
In dit geval blijft er slechts 1 factuur over en die staat in Rij 4.

Ten behoeve van een voorbeeld verander ik de factuurdatum van Rij 12 ook in september zodat er twee rekeningen in september zijn.
{0\4\0\0\0\0\0\0\0\12\0\0\0\0\0\0\0}

Nu wil ik in kolom K van rij 19 t/m 39 de rijnummers van de facturen onder elkaar zien. Daar moet je eerst een trucje voor toepassen. De factuur van rij 4 moet boven de factuur van rij 12 staan, dat is logischer. Ik verander de formule in:
=(MAAND(Registratie!$A$3:$A$19)=$K$2)*(Registratie!$G$3:$G$19=$K$1)*(20-RIJ(Registratie!$G$3:$G$19)) => {0\16\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0}
In dit geval is 20 gekozen omdat 20 groter is dan het bereik dat tot rij 19 loopt. Is rij 999 je bereik, kies dan 1000 ipv 20!
De oudste factuur in september heeft nu het grootste getal.
in cel K19: =GROOTSTE((MAAND(Registratie!$A$3:$A$19)=$K$2)*(Registratie!$G$3:$G$19=$K$1)*(20-RIJ(Registratie!$G$3:$G$19));RIJEN(K$19:K19))
Voer deze formule op de 'normale' manier in en er verschijnt 0, hetgeen niet juist is. Maar als je de formule invoert met Shift & Ctrl & Enter tegelijk dan verschijn er het getal 16, de grootste waarde uit de reeks {0\16\0\0\0\0\0\0\0\8\0\0\0\0\0\0\0}
Kopieer je formule naar beneden dan verschijnt in K20 8 en in K21 0.

Met de formule:
in cel A19: =ALS($K19=0;"";INDEX(registratie!C$3:C$19;20-$K19))
krijg je het referentienummer van de offerte van 21-9-09 van klant 3001 te zien. De '20' in deze formule komt natuurlijk overeen met de 20 uit de formule van K19.

Ik kan mij voorstellen dat het hocus pocus is, maar probeer het stap voor stap en probeer te begrijpen wat de matrix-formule doet.

Jeroen
 
Laatst bewerkt:
Bedankt Jeroen!

Je hebt een goede aanzet gedaan voor de oplossing!

Gr. Vitasyn
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan