[Excel] ongekeerd zoeken

Pagina: 1
Acties:

  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 13-08 10:01
Excel 2003 engels

Met excel probeer ik in specifieke tekst te zoeken en daar een deel uit te halen. Ik zoe een unieke stuk tekst en dan wil ik het deel dat daarvoor staat. Dit deel is variabel van lengte. Ik wil nu terugzoeken tot ik andere tekst tegenkom.

Gebruikt van FIND / MID gaat prima, alleen ze zoeken altijd van links naar rechts.
Is er een equivalent om van rechts naar links de cel te doorzoeken?

[ Voor 4% gewijzigd door paulhekje op 24-02-2005 11:15 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • onkl
  • Registratie: Oktober 2002
  • Laatst online: 07:56
Dat kan maar alleen met Visual Basic. Is vrij eenvoudig.
-Ga naar VB Editor, voeg een nieuwe module toe aan je bestand (rechtermuis op je bestand in het vak linksboven, insert- module.
-Plak onderstaande in die module:
Visual Basic:
1
2
3
Public Function findrev(ByVal Find_Text As String, Within_Text As String) As Integer
findrev = InStrRev(Within_Text, Find_Text)
End Function

Als je nu in een cel in dit bestand
code:
1
=findrev("P";"Pietje Puk")
invoert, zoe Excel 8 i.p.v. 1 moeten geven.

[ Voor 4% gewijzigd door onkl op 24-02-2005 12:03 ]


  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 13-08 10:01
Dat begint erop te lijken :)

Het is handig als ik ook een startpositie kan meegeven.

Bijvoorbeeld: =findrev("P";cel;startpositie), waarbij ik de startpositie met een FIND kan bepalen.
(Natuurlijk kan ik dit ook via een omweg doen)

[ Voor 19% gewijzigd door paulhekje op 24-02-2005 12:38 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 02-06 20:28

CoRrRan

Don't Panic!!!

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
Public Function findrev1(ByVal Find_Text As String, Within_Text As String, StartPos As Integer) As Integer
  findrev1 = InStrRev(Within_Text, Find_Text, Len(Within_Text) - (StartPos - 1))
End Function

Public Function findrev2(ByVal Find_Text As String, Within_Text As String, StartPos As Integer) As Integer
  If InStrRev(Within_Text, Find_Text, Len(Within_Text) - StartPos) <> 0 Then
    findrev2 = Len(Within_Text) - InStrRev(Within_Text, Find_Text, Len(Within_Text) - (StartPos - 1)) + 1
  Else
    findrev2 = 0
  End If
End Function
De eerste functie levert je de positie gerekend vanaf het begin van de text, de tweede functie levert je de positie op vanaf het eind van de text. (Als de text niet gevonden wordt, dan leveren beide functies 0.)

Voorbeeld:
code:
1
2
3
4
5
=findrev1("P";"Pietje Puk";1) levert 8
=findrev2("P";"Pietje Puk";1) levert 3

=findrev1("P";"Pietje Puk";4) levert 1
=findrev2("P";"Pietje Puk";4) levert 10
Succes ermee!
edit:
"," vervangen door ";"

[ Voor 9% gewijzigd door CoRrRan op 24-02-2005 13:34 ]

-- == Alta Alatis Patent == --


  • paulhekje
  • Registratie: Maart 2001
  • Laatst online: 13-08 10:01
Door je in je voorbeeld de , te vervangen door ; werkt het perfect bij me.
edit:

excuse voor de te snelle reactie+edit

[ Voor 83% gewijzigd door paulhekje op 24-02-2005 13:34 ]

|=|=|=||=|=|=||=|=|=| http://www.vanwijck.com |=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=||=|=|=|


  • CoRrRan
  • Registratie: Juli 2000
  • Laatst online: 02-06 20:28

CoRrRan

Don't Panic!!!

Dat doet functie 2 ook:
code:
1
=findrev2("P";"Pietje Puk Puk";4) levert 7

edit:
Hey, niet stiekem je antwoord veranderen he!
:P

[ Voor 40% gewijzigd door CoRrRan op 24-02-2005 13:35 ]

-- == Alta Alatis Patent == --

Pagina: 1