Avatar billede laskh Juniormester
21. juni 2023 - 15:39 Der er 2 kommentarer og
2 løsninger

Find tal i tekststreng

Jeg har brug for en formel (ikke en VBA), som i kolonne A kan trække tallene ud af en tekststreng, hvis der er minimum seks tal-cifre og maksimum otte tal-cifre sat sammen (disse tal er udtryk for en dato, hvor årstal er kort og nogle gangen langt). Disse seks eller otte tal-cifre skal fremgå af kolonne B. Med udgangspunkt i nedenstående eksempel vil det kun skulle være rækkenummer 2, 3, 4 og 5. Kan man det?

Rknr. 1. SENDES via lokal 2354 med FTT og 42
Rknr. 2. SENDES 210523 til TFT med 23
Rknr. 3. SENDES 22042023 med FTT på 324
Rknr. 4. SENDES via lok 456 med TTF den 050423
Rknr. 5. SENDES via lok 6 og 456 med TTF den 04042023
Rknr. 6. SENDES med 009 og 55 til FTF
Avatar billede Stig Seniormester
21. juni 2023 - 19:27 #1
Det kan du tro !
Ved at bruge den nye TEXTSPLIT sammen med FILTRER funktionen.
Jeg har tilladt mig også at bruge blande LET() ind i, for at gøre formlen lidt mere overkommelig.

Formlen splitter først tekststrengen op i kolonner (array), med mellemrum som seperator. Dernæst evaluerer den hvilke ord der er numeriske, og til sidst filtrere den de tal med et antal karakterer på færre end 6, og flere end 8.

=LET(opsplittet;TEKSTSPLIT(A2;" ");numeriskeVærdier;FILTRER(ord;HVIS(ER.TAL(VÆRDI(ord));SAND;FALSK)=SAND;"");resultat;FILTRER(numeriskeVærdier;(HVIS(LÆNGDE(numeriskeVærdier)<=8;SAND))*(HVIS(LÆNGDE(numeriskeVærdier)>=6;SAND));"");resultat)
Avatar billede Stig Seniormester
21. juni 2023 - 19:31 #2
Hovsa, der sneg sig en fejl med ind i formlen, her kommer der en der virker :)

=LET(opsplittet;TEKSTSPLIT(A2;" ");numeriskeVærdier;FILTRER(opsplittet;HVIS(ER.TAL(VÆRDI(opsplittet));SAND;FALSK)=SAND;"");resultat;FILTRER(numeriskeVærdier;(HVIS(LÆNGDE(numeriskeVærdier)<=8;SAND))*(HVIS(LÆNGDE(numeriskeVærdier)>=6;SAND));"");resultat)
Avatar billede laskh Juniormester
26. juni 2023 - 11:00 #4
Kæmpe tak til @Stig og @xl-Enthusiast for jeres meget brugbare løsninger. Jeg er sikker på, at der er andre brugere, som får gavn af Jeres formler.

@Stig Jeg har desværre ikke været tydelig nok omkring, at mit problem skal løses i Excel 2016, hvorfor din gode løsning og formel er forud for min versions tid. Tak fordi du gav dig tid til at løse min udfordring.

@xl-Enthusiast tak for det uploade eksempel i dropbox, meget brugbare løsning og oplysende forklaring. Jeg synes det fortjener at blive delt, hvorfor jeg har indsat formlen nedenfor, til gavn for andre brugere (med en ældre Excel-version som mig) hvor de kan hente inspiration. Tak det er meget værdsat!

#4 løsning fra xl-Enthusiast:
=HVIS.FEJL(HVIS.FEJL(TEKST(SLÅ.OP(10^8;MIDT(UDSKIFT(A1;" ";"x");RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)-7));8)+0);"00000000");TEKST(SLÅ.OP(10^8;MIDT(UDSKIFT(A1;" ";"x");RÆKKE(INDIREKTE("1:"&LÆNGDE(A1)-5));6)+0);"000000"));"")
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