Print side | Luk vindue

Find tal i tekst

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Formler
Forum beskrivelse: Hjælp til formler i regneark og/eller brugen af disse.
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=2421
Udskrevet den: 19.Maj.2024 kl. 14:57


Emne: Find tal i tekst
Besked fra: MrC
Emne: Find tal i tekst
Posteringsdato: 05.Feb.2016 kl. 12:38
Jeg skal lave en formel, der finder et tal, der er 10 cifre langt i en tekst.

Teksten kunne være "Der findes 20 forskellige produkter med p. nr 2040532316 og i 20 eksemplarer"

Hvordan laver jeg en formel der finder "2040532316" ?
Det jeg ved er at jeg skal finde et ti cifret tal der starter med 20.

Men jeg kan kun finde ud af at finde "20 forskel". Problemet er at jeg ikke ved hvornår i teksten taller kommer og om det kommer.

=HVIS.FEJL(HVIS.FEJL(MIDT($O23;FIND(Q$2;$O23);10);"")*1;"")
Hvor O23 er teksten og O2 er de "20" der skal ledes efter.
Problemet med denne formel er at den "kun" finder første sted i teksten der står 20 og tager så de næste 8 tegn så jeg får et ti cifret tal eller tekst. Denne formel skelner heller ikke om den finder en tekst eller et helt tal.

På forhånd tak for hjælpen.




Svar:
Besked fra: Inaktiv profil
Posteringsdato: 05.Feb.2016 kl. 13:10
Tryk på Alt+F11, tryk på Insert Module og indsæt følgennde kode:

Function FindTicifretTal(S As String) As Long
  Dim X As Long
  For X = 1 To Len(S)
    If Mid(S, X, 10) Like "##########" Then
      FindTicifretTal = Mid(S, X, 10)
      Exit For
    End If
  Next
End Function

Gå tilbage til regnearket (Alt+F11) og brug denne funktion:

=FindTicifretTal(A1)
hvis du har din tekst i A1.






Besked fra: Inaktiv profil
Posteringsdato: 05.Feb.2016 kl. 14:04
Glem ovenstående. Det virker ikke korrekt.


Besked fra: Inaktiv profil
Posteringsdato: 05.Feb.2016 kl. 14:36
Her er en kode fra en der kalder sig shg. Jeg ved ikke mere om vedkommende:


Function GetTheNum(sInp As String, nDigits As Long) As String
    ' returns the first match of nDigits or more digits
 
    With CreateObject("vbscript.regexp")
        .Pattern = "\d{" & nDigits & ",}"
        If .Test(sInp) Then
            GetTheNum = .Execute(sInp)(0).Value
        End If
    End With
End Function
Brug herefter: =GetTheNum(A1;10)


Besked fra: MrC
Posteringsdato: 06.Feb.2016 kl. 12:38
Tak for det


Besked fra: MrC
Posteringsdato: 06.Feb.2016 kl. 12:41
Tak for det.

Det kan jeg godt få til at virke.

Men der mangler lige et parametre, som jeg ikke helt kan gennemskue, hvor jeg skal putte ind i koden.
For nu finder en det første tal i teksten, der er 10 karakter langt. Fint.
Men hvis jeg det krav at tallet med 10 cifre som skal findes skal begynde med "20" og som jeg også vil kunne variere/ændre på - hvad gør jeg så ?  (Dvs. i den ene situation skal det starte med "20" i den anden situation skal det fx. starte med "15"):

Tekst " 20 produkter med pnr 2034575891 og 9 stk af pnr 1594835624"
Dvs. at teksten strengen kan indeholde to eller flere tal på 10 cifre, men jeg vil kunne bestemme om det er 2034575891 eller1594835624 jeg vil finde.

Jeg håber jeg formulere mig klart.



Besked fra: Inaktiv profil
Posteringsdato: 07.Feb.2016 kl. 07:24
Function GetTheNum2(sInp As String, prefix As String, nDigits As Long) As String
    With CreateObject("vbscript.regexp")
        .Pattern = prefix & "\d{" & nDigits & "}"
        If .Test(sInp) Then
            GetTheNum2 = .Execute(sInp)(0).Value
        End If
    End With
End Function

=GetTheNum2(A1; "20"; 8)


Besked fra: MrC
Posteringsdato: 08.Feb.2016 kl. 09:29
Super - mange tak for din hjælp Smile



Besked fra: MrC
Posteringsdato: 15.Feb.2016 kl. 08:51
Når jeg åbner regnearket igen så alle de steder jeg bruger funktionen GetTheNum2 så står der "#NAVN?" - hvorfor det ?

Kan jeg tvinge regnearket til at genberegne - Vil et hjælpe ? Hvordan gør man det - F9 ?



Besked fra: EXCELGAARD
Posteringsdato: 15.Feb.2016 kl. 10:31
Har du makroer aktiveret?

(Genberegn = F9)


-------------
Husk, at trykke på [Tak], hvis du kan lide et indlæg.
Husk, at trykke på [Accepteret Svar], hvis du kan bruge et løsningsforslag.


Besked fra: MrC
Posteringsdato: 16.Feb.2016 kl. 08:12
Jeg ændrede indstillingerne med at give makroerne tilladelse til at køre. Men stadig samme fejl.

Så gemte jeg regnearket som et nyt navn og wupti virkede det. - Jeg forstår ikke horfor.



Print side | Luk vindue