Hallo allemaal,
Ik heb een code nodig die het volgende moet gaat doen.
Op basis van de cliëntgegevens die vermeld staan op de factuur (tabblad samenvatting) moet die in de rapportage (tabblad klinisch en ambulant) gegevens gaan opzoeken en overnemen en soms hier ook iets aan toevoegen.
Het moet er ongeveer als volgt gaan uitzien:
Als "code prestatie" op de factuur (tabblad samenvatting) begint met 07 = moet die de volgende zoekopdrachten uitvoeren.
1. Zoek in rapportage (tabblad klinisch) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over (factuur, samenvatting kolom 2).
2. Zoek in rapportage (tabblad klinisch) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over (factuur, samenvatting kolom 2).
3. Zoek in rapportage (tabblad ambulant) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan "201500" over (factuur, samenvatting kolom 2.
4. Zoek in rapportage (tabblad ambulant) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan "201500" over (factuur, samenvatting kolom 2.
5. Als die met de bovenstaande 4 zoekopdrachten niets heeft kunnen vinden. Geef dan waarde "Niet gevonden" (factuur, samenvatting kolom 2).
Als "code prestatie" op de factuur (tabblad samenvatting) begint met alles behalve 07 = moet die de volgende zoekopdrachten uitvoeren.
1. Zoek in rapportage (tabblad klinisch) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
2. Zoek in rapportage (tabblad klinisch) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
3. Zoek in rapportage (tabblad ambulant) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad ambulant kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
4. Zoek in rapportage (tabblad ambulant) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad ambulant kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
5. Als die met de bovenstaande 4 zoekopdrachten niets heeft kunnen vinden. Geef dan waarde "Niet gevonden" (factuur, samenvatting kolom 2).
Hier de code die ik al had maar die voldoet helaas niet meer, maar misschien dat er met een aantal aanpassingen dit toch gerealiseerd kan worden.
Hierbij voorbeelden van de factuur en rapportage. In werkelijkheid zijn deze bestanden veel groter.
Hopelijk heb ik het een beetje duidelijk uitgelegd en anders hoor ik het graag.
Alvast bedankt.
groet
enrico
Ik heb een code nodig die het volgende moet gaat doen.
Op basis van de cliëntgegevens die vermeld staan op de factuur (tabblad samenvatting) moet die in de rapportage (tabblad klinisch en ambulant) gegevens gaan opzoeken en overnemen en soms hier ook iets aan toevoegen.
Het moet er ongeveer als volgt gaan uitzien:
Als "code prestatie" op de factuur (tabblad samenvatting) begint met 07 = moet die de volgende zoekopdrachten uitvoeren.
1. Zoek in rapportage (tabblad klinisch) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over (factuur, samenvatting kolom 2).
2. Zoek in rapportage (tabblad klinisch) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over (factuur, samenvatting kolom 2).
3. Zoek in rapportage (tabblad ambulant) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan "201500" over (factuur, samenvatting kolom 2.
4. Zoek in rapportage (tabblad ambulant) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan "201500" over (factuur, samenvatting kolom 2.
5. Als die met de bovenstaande 4 zoekopdrachten niets heeft kunnen vinden. Geef dan waarde "Niet gevonden" (factuur, samenvatting kolom 2).
Als "code prestatie" op de factuur (tabblad samenvatting) begint met alles behalve 07 = moet die de volgende zoekopdrachten uitvoeren.
1. Zoek in rapportage (tabblad klinisch) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
2. Zoek in rapportage (tabblad klinisch) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad klinisch kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad klinisch kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
3. Zoek in rapportage (tabblad ambulant) naar een match op basis van BSN (factuur, samenvatting kolom 7) met als controle geboortedatum (factuur, samenvatting kolom 1). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad ambulant kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
4. Zoek in rapportage (tabblad ambulant) naar een match op basis van geboortedatum (factuur, samenvatting kolom 1) met als controle deel van de naam (factuur, samenvatting kolom 3). Valt datum prestatie (factuur, samenvatting kolom 5) in de behandelperiode (rapportage, tabblad ambulant kolom 5 en 6). Neem dan celwaarde (rapportage, tabblad ambulant kolom 8) over en voeg hieraan toe " niet lab" (factuur, samenvatting kolom 2).
5. Als die met de bovenstaande 4 zoekopdrachten niets heeft kunnen vinden. Geef dan waarde "Niet gevonden" (factuur, samenvatting kolom 2).
Hier de code die ik al had maar die voldoet helaas niet meer, maar misschien dat er met een aantal aanpassingen dit toch gerealiseerd kan worden.
Code:
Sub Test_2()
Dim sn, c As Range, dGeboorte As Date, dBegin As Date, sNaam As String, l As Long, WB As Workbook, splits, bOpen As Boolean
splits = Split("C:\Users\jegen\Downloads\rapportage.xlsx ", "\")
On Error Resume Next
Set WB = Workbooks(splits(UBound(splits)))
bOpen = Not (WB Is Nothing)
If Not bOpen Then
Set WB = Workbooks.Open(Join(splits, "\"))
If WB Is Nothing Then
MsgBox "kan die file niet openen", vbCritical: Exit Sub
End If
End If
On Error GoTo 0
sn = WB.Worksheets(1).Range("A4").CurrentRegion 'kopie van je data-gegevens staan in dit blad en lees je naar een array
If Not bOpen Then WB.Close xlNo
For Each c In ActiveWorkbook.Sheets("Samenvatting").UsedRange.Columns("C").SpecialCells(xlConstants) 'loop alle namen af in je C-kolom
If c.Row > 1 Then
sNaam = c.Value
dGeboorte = c.Offset(, -2).Value 'geboortedatum staat 2 kolommen naar links
dBegin = c.Offset(, 2).Value 'begindatum staat 2 kolommen naar rechts
c.Offset(, -1).Value = "201500" 'schrijf alvast deze waarde weg naar je kostenplaats, 1 kolom naar links
For l = 1 To UBound(sn) 'loop alle gegevens in je array af
If sn(l, 2) = dGeboorte And sn(l, 5) <= dBegin And (dBegin <= sn(l, 6) Or IsEmpty(sn(l, 6))) And InStr(1, sn(l, 1), Trim(sNaam), 1) Then 'geboortedatum klopt, deel van de naam ook en valt binnen periode
Select Case sn(l, 8)
Case 403400 To 403470: c.Offset(, -1).Value = 434121
Case 403720 To 403730: c.Offset(, -1).Value = 434103
Case 403740 To 403760: c.Offset(, -1).Value = 434101
Case 403800 To 403870: c.Offset(, -1).Value = 434111
Case 403900 To 403980: c.Offset(, -1).Value = 434135
Case 405700 To 405770: c.Offset(, -1).Value = 454101
Case 405800 To 405870: c.Offset(, -1).Value = 454111
Case 405900 To 405970: c.Offset(, -1).Value = 454121
Case 407640 To 407649: c.Offset(, -1).Value = 474141
Case 407660 To 407669: c.Offset(, -1).Value = 474101
Case 407730 To 407739: c.Offset(, -1).Value = 474103
Case 407790 To 407799: c.Offset(, -1).Value = 474105
Case 407810 To 407819: c.Offset(, -1).Value = 474111
Case 407820 To 407829: c.Offset(, -1).Value = 474131
Case 602140 To 602149: c.Offset(, -1).Value = 474121
Case 407830 To 407839: c.Offset(, -1).Value = 622281
Case 601100 To 602139: c.Offset(, -1).Value = 622281
Case 602150 To 602599: c.Offset(, -1).Value = 622281
Case 603200 To 603980: c.Offset(, -1).Value = 622284
Case Else: c.Offset(, -1).Value = sn(l, 8)
End Select
Exit For
End If
Next
End If
Next
End Sub
Hierbij voorbeelden van de factuur en rapportage. In werkelijkheid zijn deze bestanden veel groter.
Hopelijk heb ik het een beetje duidelijk uitgelegd en anders hoor ik het graag.
Alvast bedankt.
groet
enrico