Avatar billede finb Ekspert
29. august 2018 - 10:49 Der er 2 kommentarer og
2 løsninger

Find ciffer i tekst - matriksformel ?

Jeg ønsker at finde positionen for et ciffer i en tekst.

Eksempel:
Teksten i celle A1 er: "abcd3456",
find positionen for tallet "3".

Resultatet er position 5 vha. matriksformlen:
=MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))

Jeg kan godt se, at FIND leder efter cifre 0-9,
men ville godt fatte resten af formlen, kan du uddybe ?
Tak finb
Avatar billede claes57 Ekspert
29. august 2018 - 11:05 #1
find leder efter tal i a1 + "0123456789"
tal er sat på efter a1, så der vil helt sikkert findes tal
min tager den mindste placering (det første tals position)

måske skulle man udenom det hele tjekke, at værdien skal være maksimum længden af a1, og hvis den er større, så returnere 'ikke fundet'
Avatar billede ebea Ekspert
29. august 2018 - 11:51 #2
Da der er indeholdt et Array i fomlen ({0,1,2,3,4,5,6,7,8,9}) bruges find (eller søg) funktionen, til at danne et Array ud fra den tekst/tal der søges i, og returnerer i tilfældet her {9;10;11;5;6;7;8;16;17;18}. Og i dette Array vil der være et laveste nummer, som indikerer startpositionen for det først fundne nummer. Og kigger du på det opbyggede Array, vil du se nummeret 5 som det laveste.
Og her bruges så MIN funktionen til finde dette laveste nummer i Arrayet, som bruges til at identificere positionen (5).
Skulle der ikke findes et tal i tekstværdien der søges i, returneres ikke nogen fejlværdi, men tallet for den samlede tekstlængde +1

Håber det gav lidt mere mening ;-)
Avatar billede finb Ekspert
30. august 2018 - 10:28 #3
Super svar, begge 2 !

#1
God ide !
""måske skulle man udenom det hele tjekke, at værdien skal være maksimum længden af a1, og hvis den er større, så returnere 'ikke fundet'""

#2:
Aha, så
FIND leder efter "0,1,2,3,4,5,6,7,8,9" i (A1 & "0123456789")

Aha, først findes "0" fra &-delen
på position 9:
{9;10;11;5;6;7;8;16;17;18}.

OG:

""Skulle der ikke findes et tal i tekstværdien der søges i,
returneres ikke nogen fejlværdi,
men tallet for den samlede tekstlængde +1""

-Er det en medfødt service i Array ?

OG:

Hvad nu, hvis jeg skulle søge efter postnr. i en tekst ?
Skulle jeg så skrive:
=FIND({1000:9999},A1&"0123456789")) ????

Super svar, begge 2 !
Avatar billede ebea Ekspert
30. august 2018 - 10:54 #4
#3  -  Til dine comments! 
#1  -  Den fejlhåndtering, er på en måde indbygget, da tal strengen &0123456789 fungerer som en "fejlchecker". I formlen, bruges disse tal efter &, som en sammenkædning af strengen der søges på, med tallene i &0123456789. Hvis du f.eks. ikke har et tal i strengen (abcdefgh), vil der returneres tallet 9, for den første tomme plads, som er en sammenkædning af tekstlængden + første ciffer i &0123456789. og Arrayet ville så se sådan ud: {9;10;11;12;13;14;15;16;17;18}  (Nul regnes ikke med)
Og er strengen der søges i, f.eks. på 20 karakterer, så vil du stadig få det returnerede tal, for enten det fundne tal i strengen, eller første tomme plads efter strengen (tallet 21 ville formlen vise).

Du kan efterprøve dette, med Excel's formel evaluering, hvor du vil kunne se det returnerede Array.

Om det gav lidt ekstra hjælp til de andre kommentarer ved jeg ikke ;-) )

Til det med postnummeret. Om det er postnummer eller andre tal, er egentlig ligegyldigt, da denne formel kun kigger efter det første tal i en streng, uanset hvad der er i strengen, og ikke selve tallet!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester