Discussion:
getallen uit een tekst halen
(te oud om op te antwoorden)
japie
2008-11-27 10:26:01 UTC
Permalink
Ik heb de volgende celinhoud

A1: Philips week 42
A2: Unilever week 42/43
A3: Week 42/43/44 BAM

Nu wil ik graag de volgende gegevens in kolom B:
B1: 42
B2: 42/43
B3: 42/43/44

Of te wel: start bij het eerste getal en eindig bij het laatste getal in de
tekst en neem alle tussenliggende waarden over
Ton
2008-11-27 11:59:02 UTC
Permalink
japie, niet zo simpel.
Mijn aanpak zou zijn, met gebruikmaking van diverse hulpkolommen.
Mogelijk nog verder te optimaliseren en een uitdaging voor jou:
Stap 1: Plaats bepalen waar weeknummers beginnen door SUBSTITUEREN van "eek
"door bv "eek#"
Stap 2: Lengte van de tekenreeks bepalen door LENGTE()
Stap 3: Spaties vervangen met een teken SUBSTITUEREN " " door "@"
Stap 4: Positie bepalen van "#" met VIND.ALLES()
Stap 5: Positie bepalen van "@" rechts van de positie van "#"
Stap 6: Weeknummers destileren met DEEL() waarbij begin en eind bepaald zijn
door de stappen 2, 4 en 5.
Succes met de uitwerking. (zelf getest en werkt !)
Ton
japie
2008-11-27 13:09:00 UTC
Permalink
Bedankt Ton,

Zoiets had ik al gedacht, ik was alleen in de hoop dat iemand zou zeggen:
"dat is heel simpel, moet je dit of dat doen, of zelf een formule in VBA
maken"
Post by Ton
japie, niet zo simpel.
Mijn aanpak zou zijn, met gebruikmaking van diverse hulpkolommen.
Stap 1: Plaats bepalen waar weeknummers beginnen door SUBSTITUEREN van "eek
"door bv "eek#"
Stap 2: Lengte van de tekenreeks bepalen door LENGTE()
Stap 4: Positie bepalen van "#" met VIND.ALLES()
Stap 6: Weeknummers destileren met DEEL() waarbij begin en eind bepaald zijn
door de stappen 2, 4 en 5.
Succes met de uitwerking. (zelf getest en werkt !)
Ton
Ton
2008-11-27 13:36:01 UTC
Permalink
Japie

Neem niet aan dat je hiermee de witte vlag uitsteekt ?
Kees
2008-11-27 12:12:02 UTC
Permalink
Op Thu, 27 Nov 2008 11:26:01 +0100 schreef japie
Post by japie
Ik heb de volgende celinhoud
A1: Philips week 42
A2: Unilever week 42/43
A3: Week 42/43/44 BAM
B1: 42
B2: 42/43
B3: 42/43/44
Of te wel: start bij het eerste getal en eindig bij het laatste getal in de
tekst en neem alle tussenliggende waarden over
Misschien geeft tekst naar kolommen mogelijkheden?
--
Kees
j van c
2008-11-27 13:41:49 UTC
Permalink
Post by japie
Ik heb de volgende celinhoud
A1: Philips week 42
A2: Unilever week 42/43
A3: Week 42/43/44 BAM
B1: 42
B2: 42/43
B3: 42/43/44
Of te wel: start bij het eerste getal en eindig bij het laatste getal in de
tekst en neem alle tussenliggende waarden over
'als 't met een vba functie moet, dan

Public Function test(tekst As String) As String
Dim pos As Integer, lengte As Integer, result As String
'overloop de karakters van links naar rechts
lengte = Len(tekst)
pos = 1
result = ""
Do Until pos > lengte

Select Case Asc(Mid(tekst, pos, 1))
Case 48 To 57: result = result & Mid(tekst, pos, 1) 'een cijfer
Case 44: result = result & "." 'een komma
Case 46: result = result & Mid(tekst, pos, 1) ' een punt
Case 47, 85: result = result & "/" ' een /

End Select
pos = pos + 1
Loop
test = result
End Function
Rene
2008-11-28 01:11:17 UTC
Permalink
Post by japie
Ik heb de volgende celinhoud
A1: Philips week 42
A2: Unilever week 42/43
A3: Week 42/43/44 BAM
B1: 42
B2: 42/43
B3: 42/43/44
Of te wel: start bij het eerste getal en eindig bij het laatste getal in de
tekst en neem alle tussenliggende waarden over
Voor B1:

=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))<2,MID(A1,SEARCH("week",A1)+5,(IF(ISERROR(FIND("
",A1,SEARCH("week",A1)+5)),LEN(A1),FIND("
",A1,SEARCH("week",A1)+5)))-(SEARCH("week",A1)+5)+1),MID(A1,SEARCH("week",A1)+5,(IF(ISERROR(FIND("
",A1,SEARCH("week",A1)+5)),LEN(A1),FIND("
",A1,SEARCH("week",A1)+5)))-(SEARCH("week",A1)+5)))
Rene
2008-11-28 02:37:36 UTC
Permalink
Post by Rene
Post by japie
Ik heb de volgende celinhoud
A1: Philips week 42
A2: Unilever week 42/43
A3: Week 42/43/44 BAM
B1: 42
B2: 42/43
B3: 42/43/44
Of te wel: start bij het eerste getal en eindig bij het laatste getal in de
tekst en neem alle tussenliggende waarden over
=IF(LEN(A1)-LEN(SUBSTITUTE(A1,"/",""))<2,MID(A1,SEARCH("week",A1)+5,(IF(ISERROR(FIND("
",A1,SEARCH("week",A1)+5)),LEN(A1),FIND("
",A1,SEARCH("week",A1)+5)))-(SEARCH("week",A1)+5)+1),MID(A1,SEARCH("week",A1)+5,(IF(ISERROR(FIND("
",A1,SEARCH("week",A1)+5)),LEN(A1),FIND("
",A1,SEARCH("week",A1)+5)))-(SEARCH("week",A1)+5)))
------------------------------
Gebruik de MID functie om de weeknr op te zoeken.
Gebruik SEARCH om startpunt te vinden: positie van "week"+5
Gebruik dit startpunt om eerst volgende spatie te vinden na de weeknummers.
Positie van deze spatie min beginpunt van weeknummers = aantal karakters in
de MID.


De ISERROR gebruiken als de weeknummers aan het eind van de string staan.
-----------

=MID(A1,SEARCH("week",A1)+5,(IF(ISERROR(FIND("
",A1,SEARCH("week",A1)+5)),LEN(A1),FIND("
",A1,SEARCH("week",A1)+5)))-(SEARCH("week",A1)+5)+1)
jan
2008-11-28 08:46:16 UTC
Permalink
Rene,

De FOUT onderschepping kan er uit, als je naar een spatie laat zoeken in A1 & " ",
waardoor de formule nog weer wat korter wordt:

=DEEL(A1;VIND.SPEC("week";A1)+5;VIND.ALLES(" ";A1 & "
";VIND.SPEC("week";A1)+5)-(VIND.SPEC("week";A1)+5)+1)

Jan

Loading...