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

een tekstuele berekening omzetten naar een echte berekening

Status
Niet open voor verdere reacties.

AndreXL

Gebruiker
Lid geworden
1 jan 2008
Berichten
33
Hallo,

Ik heb vanuit een ordertekst enkele artikelen en aantallen in Excel staan, dit is uiteraard tekst. Hoe krijg ik de uitkomst van die berekening in die tekst? Ik dacht dat ik met excel kon rekenen, maar dit lukt me nog niet. Het lukt me wel om de berekening goed uit de tekst te halen.
Als voorbeeld een eenvoudige:
in A1: 2x200 dozen. Ik wil dus de uitkomst 400 krijgen in een andere cel.
in A2: =SUBSTITUEREN("="&LINKS(A1;VIND.SPEC(" ";A1)-1);"x";"*")
Ik houd dus =2*200 (nog steeds als tekst) over. Ook A2*1, WAARDE(A2), of INDIRECT(A2) geeft me foutwaarden terug. Als ik =2*200 in een cel invoer, krijg ik uiteraard wel netjes de uitkomst...
 
Beste AndreXL ;)

Neem de volgende formule.

=RECHTS(A1;LENGTE(A1)-VIND.ALLES("x";A1))*LINKS(A1;VIND.ALLES("x";A1)-1)

Groetjes Danny. :thumb:
 
Danny,

In dit voorbeeld is dit een geschikte oplossing. Je splitst echter de berekening op in delen. Dat is niet mijn bedoeling. Ik wil gewoon de tekstberekening berekend hebben.
De voorbeeldtekst kan namelijk ook een langere berekening hebben. Ook heeft het soms afwijkende operatoren, op verschillende plekken. Het moet ook werken met 50+20*40 of 50*20-40 eenheden. Het gaat me er om dat ik "gewoon" de tekstberekening als werkende berekening overhoud.
 
Beste AndreXL ;)

Had vergeten dat dozen er ook stond, dus deze formule dan

=RECHTS(LINKS(A1;VIND.ALLES(" ";A1)-1);LENGTE(LINKS(A1;VIND.ALLES(" ";A1)-1))-VIND.ALLES("x";LINKS(A1;VIND.ALLES(" ";A1)-1)))*LINKS(LINKS(A1;VIND.ALLES(" ";A1)-1);VIND.ALLES("x";LINKS(A1;VIND.ALLES(" ";A1)-1))-1)

Groetjes Danny. :thumb:

PS: 2de vraag net gezien, of dit mogelijk is met een formule betwijfel ik.
 
Laatst bewerkt:
Danny,

ik lees zelf soms ook wel eens te snel..:D

Ik heb het zelfs al geprobeerd met een zelfgemaakte functie, maar zelfs in VBA kan ik een tekststring nog niet omzetten naar een formule.
De nog niet werkende code is als volgt:

Function IWAARDE(rng As Range) As Long
Dim Rng_tmp As Range
Set Rng_tmp = rng
Rng_tmp.Formula = rng.Value
IWAARDE = Rng_tmp.Value
End Function

Waarbij ik verwijs naar A2, de celinhoud met tekstberekening "=2*200"
Ik ploeter ondertussen verder...
 
Waarbij ik verwijs naar A2, de celinhoud met tekstberekening "=2*200"
Ik ploeter ondertussen verder...
Met een fictief excel ( bestandje ) voorbeeldje kunnen helpers soms sneller helpen of meedenken ;)
 
AndreXL,

Kijk eens naar de celeigenshappen van A2.
Omdat dit eerst tekst was kan het zomaar zijn dat dat nog steeds zo is.
Voor een formule moet deze eigenschap op standaard staan.

Wim
 
Hallo allen,

Onlangs kwam ik een soortgelijke vraag tegen en daar was een oplossing de volgende:
neem de volgende code op en je hebt een UDF.
Als je vervolgens bijv ((23+34)*2)/12,45 in een cel zet en vervolgens die cel als argument neemt voor de UDF dan heb je het antwoord.

Code:
Function RekenUit(sFormule As String) As Variant

    RekenUit = Evaluate(sFormule)

End Function

Wel er even rekening mee houden dat de decimale comma een punt moet zijn!!
 
Laatst bewerkt:
neem de volgende code op en je hebt een UDF
Had ik ook aangedacht om te schrijven en te plaatsen totdat ik nog 'ns de initiele vraag las. Je loopt dus nog stuk op tekst bij je berekening...

Ook de iks (x) in de berekening ipv een sterretje (*) loopt ook fout. Al met al zal er nog flink geklust moeten worden - naar mijn idee - om dit werkend te krijgen.

Vraag aan de TS.... Waarom wordt het op deze manier aangeleverd??? Als je de basis goed hebt, is het leven namelijk een stuk simpeler.

Groet, Leo
 
Hallo Ginger,

Als TS met zijn formule
SUBSTITUEREN(LINKS(A1;VIND.SPEC(" ";A1)-1);"x";"*")
het gedeelte heeft gevonden waarmee hij wil rekenen, dan kan hij met de door mij gegeven UDF in één keer het resultaat bereiken:
=RekenUit(SUBSTITUEREN(LINKS(A1;VIND.SPEC(" ";A1)-1);"x";"*"))
 
Ok, ik ben verder.

Ik kan inderdaad met de Rekenuit manier, dus feitelijk de Evaluate functie, hiermee de tekstberekening omzetten. Deze functie was mij nog niet duidelijk, maar gelukkig werkt het en is het dus de juiste. Ik zal rekening houden met de . en , notaties, maar dit was me wel bekend.
Er is volgens mij geen manier om dit zonder een UDF te doen, ik zal dus in mijn bestanden deze UDF steeds opnemen.
Een ieder bedankt voor het meedenken en geven van de antwoorden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan