gegevens in rapportage opzoeken met meerdere zoekopdrachten

Status
Niet open voor verdere reacties.

enrico85

Gebruiker
Lid geworden
13 sep 2013
Berichten
56
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.

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
 

Bijlagen

  • rapportage.xlsx
    12,2 KB · Weergaven: 29
  • factuur.xlsx
    15,7 KB · Weergaven: 610
Enrico,

Zou je de bestanden willen aanpassen zodat we kunnen testen.
In bestand factuur komt het BSN nummer niet voor in tabblad samenvatting en de namen noch de geboortedata in het bestand factuur
komen voor in bestand rapportage.

Veel Succes.
 
Stom van mij, ik heb de verkeerde factuur bijgevoegd.

Hierbij de juiste factuur.

groet
enrico
 

Bijlagen

  • factuur.xlsx
    16,5 KB · Weergaven: 30
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan