• 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.

getal voor een match weergeven

Status
Niet open voor verdere reacties.

Paat

Gebruiker
Lid geworden
25 mrt 2013
Berichten
14
Ik heb een kolom met medicijnen zoals bijvoorbeeld GENEESMIDDEL X 10G/200ML FL en een kolom met eenheden zoals bijvoorbeeld ML. Is het mogelijk om die rij met elkaar te vergelijken en omdat in dit voorbeeld ML in dezelfde rij in kolom 2 voorkomt, de return 200 is. Mocht er geen match zijn dan zou ik graag het getal 1 terugkrijgen. Dus bijvoorbeeld:

Bekijk bijlage Geneesmiddel voorbeeld.xlsx

Dus als er een getal voor de "match" staat, dat getal wordt weergegeven (in kolom 3).

Alvast heel erg bedankt.
Met vriendelijke groeten,
Patrick
 
Maak eens een voorbeeld met alle mogelijke eenheden; en zorg dat in kolom A alle gegevens gestandaardiseerd komen te staan.
 
De etiketnamen van de medicijnen in Kolom A komen helaas in die onregelmatige format uit het systeem, de eenheden in Kolom B kunnen bijvoorbeeld: DR, MG, G, ML, of * zijn.. Morgenochtend kan ik alle combinaties van de eenheden opzoeken. Dus ik hoopte dat het mogelijk was om in de etiketnaam te zoeken naar de eenheid in de kolom ernaast, met als voorwaarde dat er ook een getal voor die match staat. Dat getal hoop ik als output te krijgen.

Denkt u dat dat mogelijk is?
 
Op basis van het huidige, beperkte voorbeeld zou ik voor een User Defined Function gaan, zie bijlage.
Ik maak wel de veronderstelling dat tussen getal en eenheid ofwel géén spatie, ofwel één spatie staat (en niets anders).
 

Bijlagen

  • Geneesmiddel voorbeeld.xlsm
    14,9 KB · Weergaven: 21
Laatst bewerkt:
Dat klopt inderdaad!
Ik liep vandaag tegen dit probleem aan, morgenochtend zal ik met een uitgebreider voorbeeld komen waarin de meest voorkomende combinaties zullen staan.
Bedankt in ieder geval voor de moeite.
 
Beste WHER, volgens mij heeft u het probleem al opgelost! Het ziet er heel goed uit, onwijs bedankt!
 
Beste WHER,

Ik heb uw code getest en ik ben al zeer tevreden met het resultaat. Echter er komen twee uitzonderingen naar boven; is het mogelijk om de code hoofdletter/ kleine letter onafhankelijk te maken en kan een komma meegenomen worden in het getal?

Zie bijlage: Bekijk bijlage Geneesmiddel voorbeeld update.xlsm

Ontzettend bedankt,
Patrick
 
Code:
Sub M_snb()
    Columns(1).Replace "/", " / "
    Columns(1).Replace "=", " / "
    Columns(1).Replace "ml", " ml"
    Columns(1).Replace "mg", " mg"
    [A1:A100] = [index(trim(A1:A100),)]
    For Each cl In Columns(1).SpecialCells(2)
      cl.Offset(, 5) = Split(Split(cl, LCase(" " & cl.Offset(, 1)))(0))(UBound(Split(Split(cl, LCase(" " & cl.Offset(, 1)))(0))))
    Next
End Sub
 
Ik heb uiteindelijk de code van WHER aangepast en met de subsitute functie de uitzonderingen weggehaald. Iedereen heel erg bedankt, mijn probleem is opgelost!
 
Toch nog even een aangepaste code die de decimalen ook weergeeft:
Code:
Public Function getal(rng1 As Range, rng2 As Range)
Dim regEx
Set regEx = CreateObject("VBScript.RegExp")
With regEx
    .IgnoreCase = True
    .Pattern = "[0-9]+(,\d+)*\s?" & rng2.Text
   getal = Replace(.Execute(UCase(rng1.Value))(0), rng2.Text, "")
End With
End Function
 
Kijk dat scheelt me weer een kolom met extra berekeningen, nogmaals dank WHER!
 
Ik gebruik de volgende macro om in een keer al mijn formules uit te rekenen. Dit gaat bij alle formules goed behalve bij de functie getal(). De juiste formule komt wel in de juiste kolom te staan, maar de formule wordt vervolgens niet uitgerekend (behalve bij de eerste cel van de kolom). Als ik handmatig dubbelklik op het vierkantje rechtsonder in de eerste cel (C3) worden de juiste waardes wel weergegeven? Ik heb echt geen idee waarom de macro alleen voor deze functie niet werkt? Iemand een idee??

Zie ook: Bekijk bijlage voorbeeld.xlsm

Code:
Sub Berekenen()
    
    With Range("C3")
        .FormulaR1C1 = "=IFERROR(getal(RC[-2],RC[-1]),1)"
        .AutoFill Range("C3:C" & Sheets("Zamicom Verbruik").Cells(Rows.Count, 1).End(xlUp).Row)
    End With

    With Range("X3")
        .FormulaR1C1 = "=RC[-1]*10"
        .AutoFill Range("X3:X" & Sheets("Zamicom Verbruik").Cells(Rows.Count, 1).End(xlUp).Row)
    End With
    
    Etcetera..

End Sub

Bij voorbaat dank :)
 
Het lijkt mij logischer om de formule direct in alle betrokken cellen te plaatsen i.p.v. enkel in de eerste cel en vervolgens "autofill" te gebruiken;
Volgende aanpak werkt bij mij in het voorbeeld.
Code:
Sub Berekenen()
    
    With Range("C3:C" & Cells(Rows.Count, 1).End(xlUp).Row)
        .FormulaR1C1 = "=IFERROR(getal(RC[-2],RC[-1]),1)"
    End With
    
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan