Hallo beste mensen,
Ik loop al een tijdje tegen een vervelend probleen aan.
Van een Excel werkblad worden 870 rijen gebruikt. De eerste 4 rijen dienen als titel en zijn vastgezet. Dat is handig bij het omlaag-scrollen.
Rij 5 t/m 870 bevat de data.
In de eerste kolom (standaard opmaak) staat een getal dat een weeknummer voorstelt.
Het begint met 9301 (rij 5) en eindigt met week 32 in 2009 oftewel 0932 (rij 870)
In de tweede kolom staat de inkoopprijs van een artikel en in de derde kolom de verkoopprijs
De eerste inkoop vond plaats in week 9310. De verkoop in week 9316. Dat was de eerste transactie
De laatste transactie vond plaats in week 0825 (inkoop) en 0840 (verkoop)
Voor de weken waarin geen handeling plaatsvindt, staat de kolom 2 en 3 niets ingevuld
In de vierde kolom zou ik graag de winst willen weergeven. Ik heb daarvoor het onderstaand VBA programmaatje geschreven dat als een Function (dus als formule) op elke regel van de 870 regels in het werkblad is ingevuld.
Daarvoor heb ik het eerste programmaatje (zie beneden) geschreven, maar dat werkt totaal niet.
Na lang geexperimenteer, kwam ik tot de volgende conclusie: Excel rekent andersom! D.w.z. Excel begint niet bij rij 5, maar bij 870 en rekent naar omhoog!
Daarop heb ik het tweede programmaatje (zie ook beneden). De functie werkt goed, maar
de winst (of verlies) wordt consequent geplaatst op de regel van de inkoop i.p.v. de verkoop. Logisch, als de cellen van beneden naar boven worden doorlopen.
Hetzelfde probleem heb ik met het nummeren van de transacties. Excel plaatst nummer van de laatste transactie (122) op de rij van week 9310, en nummer 1 bij de laatste week (0825) in plaats van andersom.
Ik zou graag de getallen op de goede plaats willen hebben. Ook omdat elke week een regel wordt toegevoegd en ik graag zou willen dat alles meteen netjes klopt.
Hoe kan ik dit probleem oplossen? (ik heb al van alles geprobeerd, maar kom er niet uit)
Wie zou mij willen helpen?
Werkt niet:
Function Nwinst(ByVal BuyLevel, SellLevel) As Double
'
Static APrijs As Double
Dim VPrijs As Double
If BuyLevel > 0 Then
APrijs = BuyLevel
End If
'Exit Function
If SellLevel > 0 Then
VPrijs = SellLevel
Nwinst = VPrijs - APrijs
End If
End Function
Het volgende progr werkt wel, maar de winst staat op dezelde regel als de inkoop
i.p.v de verkoop
Function Nwinst(ByVal BuyLevel, SellLevel) As Double
'
Static VPrijs As Double
Dim APrijs As Double
If SellLevel > 0 Then
VPrijs = SellLevel
Exit Function
End If
If BuyLevel > 0 Then
APrijs = BuyLevel
Nwinst = VPrijs - APrijs
End If
End Function