In B3 komt dit:quote:Op woensdag 23 december 2009 18:39 schreef RoaldReurink het volgende:
[..]
Dank voor je snelle respons, maar het lukt niet echt Even een screenshot van het probleem...bij de vraagtekens dus moet 'nee' komen wanneer het gezin geen kinderen heeft. In kolom D zie je de dropdownbox en in kolom F de mogelijkheden voor die dropdownbox.
[ afbeelding ]
geen idee wat je nu precies wilt... Je wilt iets laten selecteren op basis van de selectie man of vrouw, of wat?quote:Op maandag 28 december 2009 15:03 schreef RoaldReurink het volgende:
Ik vroeg mij af of dit mogelijk is:
[ afbeelding ]
De klant kiest bijvoorbeeld 'Man', 'Premieduur 15 jaar, geboren op 12-08-2008 (dus 1 jaar oud), dan wordt er automatisch 'leeftijd 1 MAN' gekozen = 5,00
Het lastige is de geboortedatum dat als ik nu invul 21-02-1986 dat Excel weet dat ik dan 23 ben, en de goede lengte van de premieduur.
Is dit mogelijk? Zou namelijk erg mooi zijn als dat zo is
Gr,
Roald
Dan krijg je je leeftijd in dagen, wat niet altijd even handig is om mee te rekenen.quote:Op maandag 28 december 2009 15:33 schreef kingjotte het volgende:
Je hebt in excel de NOW functie (zal wel NU heten in het Nederlands ofzo, achterlijke vertalingen altijd), die de huidige tijd teruggeeft, als je daar de geboortedatum vanaf haalt krijg je de leeftijd?
dat klopt niet, het moet dit zijn:quote:Op maandag 28 december 2009 15:38 schreef Beregd het volgende:
[..]
Dan krijg je je leeftijd in dagen, wat niet altijd even handig is om mee te rekenen.
je kunt ook bijvoorbeeld year(now())-year(a1)+(month(now())-month(a1)/12+(day(now())-day(a1))/365 doen
dat zei ik tochquote:Op maandag 28 december 2009 15:50 schreef kingjotte het volgende:
[..]
dat klopt niet, het moet dit zijn:
=YEAR(NOW())-YEAR(A1)+(MONTH(NOW())-MONTH(A1))/12+(DAY(NOW())-DAY(A1))/365
ja, als je enkel jaren moet hebben is dat idd het makkelijkste maar soms is het exact nodig.quote:Op maandag 28 december 2009 15:52 schreef DaFan het volgende:
Huh doe gewoon =ROUNDDOWN((TODAY()-A1)/365;0)
waar A1 de geboortedatum is. Of ben ik nou gek
jij: YEAR(NOW())-YEAR(A1)+(MONTH(NOW())-MONTH(A1)/12+(DAY(NOW())-DAY(A1))/365quote:Op maandag 28 december 2009 15:54 schreef Beregd het volgende:
[..]
dat zei ik toch
en waarom vraag je het dan?
Dat wordt pas na 100 jaar ofzo een issue, of de dag erna. Maar goed ik snap je puntquote:Op maandag 28 december 2009 16:33 schreef Beregd het volgende:
om nog even terug te keren op de formule van dafan, die zal niet altijd werken omdat sommige jaren 366 dagen tellen, zeker als je over vele jaren rekent
Wat is het regeltje om aan die 5 euro te komen, gegeven het geslacht en de leeftijd? Moet je dan niet ook de premieduur weten?quote:Op maandag 28 december 2009 16:48 schreef RoaldReurink het volgende:
Ja ok, met leeftijd uitrekenen is gelukt.
Echter nog niet dit probleem: uit tabel (zie figuur) moet er dus automatisch worden gekozen dat iemand 'man' is en '1 jaar', en premieduur '15 jaar', dus er moet automatisch 5,00 (euro) worden geselecteerd.
Die 5, is 5 euro, dus er moet komen:
Premiekosten: 5 euro (=man, 1jaar, premieduur 15 jaar --> hier een formule voor)
Hopelijk zo goed uitgelegd
Ja de premieverdeling heb ik anders ingevoerd omdat ik niet weet of ik die mag posten. Deze verdeling is zo als ik het gekregen, leeftijd vrouw begint bij 5 jaar.quote:Op maandag 28 december 2009 17:42 schreef kingjotte het volgende:
[..]
Wat is het regeltje om aan die 5 euro te komen, gegeven het geslacht en de leeftijd? Moet je dan niet ook de premieduur weten?
Als we het in een formule moeten vatten, zullen we toch eerst moeten weten wat de spelregels zijn.
Verder, wat is nou precies het gewenste resultaat? Je hebt het over automatisch 5,00 selecteren, maar hoe wil je dat weergeven? Als een regeltje onder Geboortedatum en Geslacht?
[offtopic]
Rare premieverdeling hanteer je en wat nou als er een vrouw van 3 langskomt?
[/offtopic]
om het wat leesbaarder te maken heb ik even een extra veld "leeftijd" toegevoegd, dan ziet het er zo uit:quote:=INDEX(prijzen;IF(geslacht="man";MATCH((YEAR(NOW())-YEAR(geboortedatum)+(MONTH(NOW())-MONTH(geboortedatum))/12+(DAY(NOW())-DAY(geboortedatum))/365);leeftijden_man);MATCH((YEAR(NOW())-YEAR(geboortedatum)+(MONTH(NOW())-MONTH(geboortedatum))/12+(DAY(NOW())-DAY(geboortedatum))/365);leeftijden_vrouw));MATCH(duur;premie_lengtes))
ik heb alle relevante cellen (of cellranges) een naam gegeven, dit houdt je "code" ook wat beter onderhoudbaar.quote:=INDEX(prijzen;IF(geslacht="man";MATCH(leeftijd;leeftijden_man);MATCH(leeftijd;leeftijden_vrouw));MATCH(duur;premie_lengtes))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | Const WeekNummerCel As String = "B1" Const DatumMaandag As String = "C2" Public NieuweAgenda As Object Sub MaakAgenda(Jaar As Long) Dim WeekNummer As Integer, DefaultSheets As Integer With Application 'Haal de flikkering weg .ScreenUpdating = False 'Zet het aantal sheets in nieuw workbook op 1 DefaultSheets = .SheetsInNewWorkbook .SheetsInNewWorkbook = 1 'Maak nieuw nieuwe agenda aan Set NieuweAgenda = .Workbooks.Add 'weken van het jaar WeekNummer = ISOweeknum(DateSerial(Jaar, 1, 1)) 'Week 52/53 If WeekNummer > 1 Then Call VulAgenda(WeekNummer, Jaar) End If 'Week 1 -> 52/53 For WeekNummer = 1 To ISOweeknum(DateSerial(Jaar, 12, 31)) Call VulAgenda(WeekNummer, Jaar) Next 'Opruimen .DisplayAlerts = False NieuweAgenda.Sheets(1).Delete NieuweAgenda.Sheets(1).Select 'ActiveWindow.ScrollWorkbookTabs Position:=xlFirst .DisplayAlerts = True Set NieuweAgenda = Nothing .SheetsInNewWorkbook = DefaultSheets .ScreenUpdating = True End With End Sub Sub VulAgenda(WeekNummer As Integer, Jaar As Long) Dim Maandag As Date, SheetName As String Maandag = ISOweeknumNaarDatum(Jaar, WeekNummer) ThisWorkbook.Sheets(SjabloonBladnaam).Copy After:=NieuweAgenda.Sheets(NieuweAgenda.Sheets.Count) With NieuweAgenda.ActiveSheet SheetName = CStr(" Week " & WeekNummer) If SheetExists(NieuweAgenda, SheetName) Then SheetName = SheetName & "-" .Name = SheetName .Range(WeekNummerCel) = WeekNummer .Range(DatumMaandag) = Maandag End With End Sub Public Function ISOweeknumNaarDatum(ByVal Jaar As Integer, ByVal Week As Integer) As Date Dim Maandag As Date, Weeknum As Integer Maandag = EersteMaandagJaar(Jaar) Weeknum = ISOweeknum(Maandag) 'If Weeknum = 53 Then Weeknum = 52 ISOweeknumNaarDatum = ((Week - Weeknum) * 7) + Maandag End Function Public Function ISOweeknum(ByVal Datum As Date) As Integer ISOweeknum = DatePart("ww", Datum, vbMonday, vbFirstFourDays) End Function Private Function EersteMaandagJaar(ByVal Jaar As Integer) As Date Const DONDERDAG = 4 Dim Nieuwjaar As Date, Weekdag As Integer Nieuwjaar = DateSerial(Jaar, 1, 1) Weekdag = DatePart("w", Nieuwjaar, vbMonday, vbFirstFourDays) - 1 EersteMaandagJaar = Nieuwjaar - Weekdag If Weekdag > DONDERDAG Then EersteMaandagJaar = EersteMaandagJaar + 7 End Function 'SheetExists Function -> Bestaat de sheet al in het workbook Private Function SheetExists(Book As Object, SheetName As String) As Boolean ' Geeft TRUE als sheet bestaat in het actieve workbook On Error Resume Next Dim x As Object SheetExists = False Set x = Book.Sheets(SheetName) If Err = 0 Then SheetExists = True On Error GoTo 0 End Function |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |