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

Vergelijken

Status
Niet open voor verdere reacties.

wimix69

Gebruiker
Lid geworden
19 mrt 2011
Berichten
195
Hallo beste alles weters :)

Ik gebruik in een document een vergelijking om te bepalen welke van de twee ingegeven waarde het hoogste is. Nu wordt er vaak achter de cijfers 1 of 2 min of plus tekens gezet. Als dat gedaan wordt werkt de formuler niet meer. Is het Uberhaubt mogelijk met een formule of macro om toch te bepalen welke van deze twee waarde hoger is. 0,30-- 0,30+ 0,30+ is dan hoger
 

Bijlagen

  • vergelijken.xlsx
    10,8 KB · Weergaven: 23
Zoiets? Wel ingewikkeld door de gebruikte notatie...
Code:
=ALS(--ALS(RECHTS(B1;2)="--";LINKS(B1;LENGTE(B1)-2);ALS(RECHTS(B1;1)="-";LINKS(B1;LENGTE(B1)-1);SUBSTITUEREN(B1;"+";"")))>--ALS(RECHTS(D1;2)="--";LINKS(D1;LENGTE(D1)-2);ALS(RECHTS(D1;1)="-";LINKS(D1;LENGTE(D1)-1);SUBSTITUEREN(D1;"+";"")));B1;D1)

=ALS(SUBSTITUEREN(ALS(RECHTS(B1;2)="--";SUBSTITUEREN(B1;"--";"");ALS(RECHTS(B1;1)="-";-SUBSTITUEREN(B1;"-";"");B1));"+";"")>=1*SUBSTITUEREN(ALS(RECHTS(D1;2)="--";SUBSTITUEREN(D1;"--";"");ALS(RECHTS(D1;1)="-";-SUBSTITUEREN(D1;"-";"");D1));"+";"");B1;D1)

Mocht je een echte waarde willen (geen tekst):
Code:
=MAX((1*SUBSTITUEREN(ALS(RECHTS(B1;2)="--";SUBSTITUEREN(B1;"--";"");ALS(RECHTS(B1;1)="-";-SUBSTITUEREN(B1;"-";"");B1));"+";""));1*SUBSTITUEREN(ALS(RECHTS(D1;2)="--";SUBSTITUEREN(D1;"--";"");ALS(RECHTS(D1;1)="-";-SUBSTITUEREN(D1;"-";"");D1));"+";""))
 
Laatst bewerkt:
Bedankt AlexCel,

Deze werkt zo te zien het beste.

=ALS(--ALS(RECHTS(B1;2)="--";LINKS(B1;LENGTE(B1)-2);ALS(RECHTS(B1;1)="-";LINKS(B1;LENGTE(B1)-1);SUBSTITUEREN(B1;"+";"")))>--ALS(RECHTS(D1;2)="--";LINKS(D1;LENGTE(D1)-2);ALS(RECHTS(D1;1)="-";LINKS(D1;LENGTE(D1)-1);SUBSTITUEREN(D1;"+";"")));B1;D1)
 
Hoe kom je aan zulke notaties?

Toch maar een duitje.
Code:
=ALS(SUBSTITUEREN(SUBSTITUEREN(B1;"-";"");"+";"")>SUBSTITUEREN(SUBSTITUEREN(D1;"-";"");"+";"");B1;D1)
 
Hallo,

Eerste formule van AlexCel werkt het beste. is bijna goed.

Aanduiding wordt in de Optiek gebruikt vooral bij slechtiende mensen. Ieder regel die gelezen wordt heeft een bepaalde waarde, bijvoorbeeld 0,30. lees je van de 5 letter er 2 verkeerd op dan wordt dat aangegeven met 0,30--. Kan je twee letters meer lezen van de volgend regel dan wordt dat aan gegeven met 0,30++.

Kan de formule aangepast worden zodat ook de bovenste werkt in voorbeeld.
Naast de waard die in gegegeven worden kunnen ook via validatie bepaalde notatie's geselecteerd worden. Als dit nu gedaan wordt verschijnen er hekjes. Kan het veld ook leeg blijven?
 

Bijlagen

  • vergelijken 4-4.xlsx
    17,7 KB · Weergaven: 12
met een udfje misschien heb je hier iets aan. zie grijze cellen:
 

Bijlagen

  • vergelijken 4-4-sp.xlsm
    24,5 KB · Weergaven: 16
Het wordt er niet simpeler op maar hierbij ook nog een formule-optie, naast de VBA-optie hierboven:
Code:
=ALS(OF(ISGETAL(VERGELIJKEN(B2;$L$2:$L$11;0));ISGETAL(VERGELIJKEN(D2;$L$2:$L$11;0)));"";ALS(ALS(ISGETAL(--RECHTS(B2;1));B2;ALS(RECHTS(B2;2)="++";--LINKS(B2;LENGTE(B2)-2);ALS(RECHTS(B2;1)="+";--LINKS(B2;LENGTE(B2)-1);ALS(RECHTS(B2;2)="--";--LINKS(B2;LENGTE(B2)-2);-LINKS(B2;LENGTE(B2)-1)))))>=ALS(ISGETAL(--RECHTS(D2;1));D2;ALS(RECHTS(D2;2)="++";--LINKS(D2;LENGTE(D2)-2);ALS(RECHTS(D2;1)="+";--LINKS(D2;LENGTE(D2)-1);ALS(RECHTS(D2;2)="--";--LINKS(D2;LENGTE(D2)-2);-LINKS(D2;LENGTE(D2)-1)))));B2;D2))
 

Bijlagen

  • vergelijken 4-4 (AC).xlsx
    20 KB · Weergaven: 10
ik heb er maar een hekel aan die geneste functies, maar als mijn vorige beter was getest had ik nu niet gereageerd.
Code:
=als(en(isgetal(--substitueren(substitueren(b2;"-";"");"+";""));isgetal(--substitueren(substitueren(d2;"-";"");"+";"")));als(substitueren(substitueren(b2;"-";"");"+";"")>substitueren(substitueren(d2;"-";"");"+";"");b2;als(rechts(b2;1)="+";b2;d2));"")
 

Bijlagen

  • vergelijken 4-4.xlsx
    18 KB · Weergaven: 12
Code:
=ALS(B2>D2;B2;D2)
Volgens mij kan je de getallen gewoon als string behandelen.
 
Laatst bewerkt:
Simpel. :thumb:

Kleine aanpassing voor de andere voorbeelden.
 
HAllo alles weters,

Mooie oplossingen allemaal is ga ze uitproberen. Bedankt allemaal.
 
Vegelijken

Hallo,

Code:
Function mijnHoogste(S1, S2)
Dim V1, V2, L1, L2
With WorksheetFunction
    V1 = .Substitute(.Substitute(S1, "+", ""), "-", "")
    L1 = .Substitute(S1, V1, "")
    If Not IsError(Evaluate(V1)) Then V1 = Evaluate(V1)
    If V1 = "LP" Then V1 = 0
    V2 = .Substitute(.Substitute(S2, "+", ""), "-", "")
    L2 = .Substitute(S2, V2, "")
    If Not IsError(Evaluate(V2)) Then V2 = Evaluate(V2)
    If V2 = "LP" Then V2 = 0
    Select Case V1 - V2
        Case Is < 0
            mijnHoogste = S2
        Case Is > 0
            mijnHoogste = S1
        Case 0
            mijnHoogste = S1
            If L1 > L2 Then mijnHoogste = S2
    End Select
End With
End Function

Is deze Macro zo aan te passen dat de fouten uitkomsten in het voorbeeld goed weer gegeven worden?
 

Bijlagen

  • vergelijken 5-4-sp (1).xlsm
    26,1 KB · Weergaven: 12
Kunnen 1/300 en 0,25++ samen voorkomen?
En welke is dan de uitkomst? en waarom?
 
Hallo sylvester-ponte

In een paar gevallen krijg ik nog een verkeerde waarde. Zie voorbeeld

Code:
Function mijnHoogste(S1, S2)
Dim V1, V2, L1, L2
On Error Resume Next
mijnHoogste = ""
With WorksheetFunction
    V1 = .Substitute(.Substitute(S1, "+", ""), "-", "")
    L1 = .Substitute(.Substitute(S1, V1, ""), "-", " ")
    If Not IsError(Evaluate(V1)) Then V1 = Evaluate(V1)
    If V1 = "LP" Then V1 = 0
    V2 = .Substitute(.Substitute(S2, "+", ""), "-", "")
    L2 = .Substitute(.Substitute(S2, V2, ""), "-", " ")
    If Not IsError(Evaluate(V2)) Then V2 = Evaluate(V2)
    If V2 = "LP" Then V2 = 0
    Select Case V1 - V2
        Case Is < 0
            mijnHoogste = S2
        Case Is > 0
            mijnHoogste = S1
        Case 0
            mijnHoogste = S1
            If L1 < L2 Then mijnHoogste = S2
    End Select
End With
End Function

1/300 betekend dat er alleen nog maar een handbeweging op maximaal 1 meter kan worden waargenomen, 300 staat voor je hand
1/60 is vingers kunnen waarnemen op maximaal een meter, 60 staat voor je vingers
LP = licht perseptie LP- is blind LP+ kan alleen nog maar het licht aan en uit zien gaan.
Dit kan dus voor het rechter en linker oog verschillend zijn.
 

Bijlagen

  • vergelijken 5-4-sp (2).xlsm
    26,5 KB · Weergaven: 15
weer een kleine aanpassing: :)
 

Bijlagen

  • vergelijken 5-4-sp (3).xlsm
    25,9 KB · Weergaven: 14
Laatst bewerkt:
Geweldig helemaal goed, Bedankt Sylvester Ponten en natuurlijk iedereen die mee gedacht heeft.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan