Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketFind tal i tekst

 Besvar Besvar
Forfatter
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Emne: Find tal i tekst
    Sendt: 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.

Til top



Til top
Inaktiv profil Se dropdown
Gæst
Gæst


Medlem: 01.Apr.2015
Land: Danmark
Status: Offline
Point: 0
Direkte link til dette indlæg Sendt: 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.




Til top
Inaktiv profil Se dropdown
Gæst
Gæst


Medlem: 01.Apr.2015
Land: Danmark
Status: Offline
Point: 0
Direkte link til dette indlæg Sendt: 05.Feb.2016 kl. 14:04
Glem ovenstående. Det virker ikke korrekt.
Til top
Inaktiv profil Se dropdown
Gæst
Gæst


Medlem: 01.Apr.2015
Land: Danmark
Status: Offline
Point: 0
Direkte link til dette indlæg Sendt: 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)
Til top
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Sendt: 06.Feb.2016 kl. 12:38
Tak for det
Til top
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Sendt: 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.

Til top
Inaktiv profil Se dropdown
Gæst
Gæst


Medlem: 01.Apr.2015
Land: Danmark
Status: Offline
Point: 0
Direkte link til dette indlæg Sendt: 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)
Til top
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Sendt: 08.Feb.2016 kl. 09:29
Super - mange tak for din hjælp Smile

Til top
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Sendt: 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 ?

Til top
EXCELGAARD Se dropdown
Platin bruger
Platin bruger


Medlem: 27.Dec.2012
Land: Denmark
Status: Offline
Point: 5418
Direkte link til dette indlæg Sendt: 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.
Til top
MrC Se dropdown
Sølv bruger
Sølv bruger


Medlem: 19.Maj.2015
Land: DK
Status: Offline
Point: 136
Direkte link til dette indlæg Sendt: 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.
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk