12. oktober 2016 - 13:30Der er
19 kommentarer og 2 løsninger
Find talværdi i tekststreng
Hejsa,
Jeg står og skal finde en masse talværdier i en masse tekst.
Et eksempel kunne være: "Model 87 koster 10.000 kr. og er meget fin" - jeg vil have 10.000 "Model 88 koster 250 kr. og er knap så fin" - jeg vil have 250 "Model 1 ligger på 30 kr. og er rød" - jeg vil have 30
Altså vil jeg gerne kunne finde den værdi, der står før "kr." - hvordan gøres det? :)
Tak for dit svar. Jeg må dog indrømme, at jeg ikke lige kan få det til at virke - er forholdsvis ny til denne slags. Jeg kunne godt tænke mig at få resultatet udskrevet i kolonne J. Derudover har jeg lidt svært ved at se, hvordan funktionen skal "få fat i" alle værdierne i kolonne A - snupper den ikke kun værdien fra A1, sådan som den står nu?
Det bliver nok med VBA, som Supertekst har angivet. Følgende formel, fjerner kun teksten, efter din "kr." angivelse, men efterlader så tekst foran beløbet. Og der er udfordringen, da du har 2 talværdier, men ikke andet adskilning end "kr." Formlen kan du indsætte i J, og kopiere nedad. =MIDT(B1;1;FIND("kr.";B1)-1)
Formlen find kan give dig hvilket karakternummer kr. starter ved. Midt kan beskære i en tekst fra den karakter du vælger. Så er tricket at finde ud af hvor langt bagud den skal skære, hvis du så ved der altid er mellemrum inden beløb kan det være en hvis sætning der skaber det....
Vi starter med at finde hvor der står kr: =find(" kr";[celle hvor din tekst er]) - bemærk at jeg medtager første mellemrum inden kr for at kunne skære inden da. Så skal vi lure hvor der er mellemrum sidst inden dette - jeg brugte en tilfældig reference hvor jeg satte din ordlyd ind: =HVIS(MIDT(H482;N482-1;1)=" ";N482-1;HVIS(MIDT(H482;N482-2;1)=" ";N482-2;HVIS(MIDT(H482;N482-3;1)=" ";N482-3;HVIS(MIDT(H482;N482-4;1)=" ";N482-4;HVIS(MIDT(H482;N482-5;1)=" ";N482-5;HVIS(MIDT(H482;N482-6;1)=" ";N482-6)))))) udfordringen er at formlen ikke kan klare flere hvis argumenter, så den kan ikke løse så snart der er mere end 6 karakterer i dit tal.
Jeg håber nogen har en bedre ide, eller måske kan skabe en makro med baggrund i denne løsning.
Dim antalRækker As Integer, ræk As Integer Dim tekst As String, xx As Variant, x As Integer, beløb As Long Public Sub findKr() antalRækker = Cells(Rows.Count, "A").End(xlUp).Row
For ræk = 1 To antalRækker tekst = Range("A" & ræk) xx = Split(tekst, " ")
For x = 0 To UBound(xx) If xx(x) = "kr." Then beløb = Trim(xx(x - 1)) Range("J" & ræk) = beløb Exit For End If Next x Next ræk End Sub
Nå, så kom jeg for alvor i gang med at bruge de forskellige svar, og jeg må desværre konstatere, at hvad der umiddelbart virkede fint ikke helt holder, når det kommer til de voldsomme mængder tekst, jeg sidder med.
#6/Jens48: Formlen virker umiddelbart fint, men efter at have trukket den ned forbi 10-20 rækker, begynder den at give fejl #VÆRDI! "En værdi, der bruges i formlen, er en forkert datatype". Kan ikke finde nogen grund til at den begynder at give denne fejl og kan ikke finde et helt fast mønster for, hvornår den gør det. #9/excelent's formel volder lignende problemer.
#7/supertekst: Igen virker det umiddelbart fint, men efter en hel del rækker giver den pludselig Error 13: Type mismatch. Kan desværre heller ikke finde en løsning på dette.
Håber, i har nogle ideer til, hvad jeg kan prøve - på forhånd tak.
#12 jeg kan for så vidt ikke se, hvilken række fejlen sker ved, da den inden da har sprunget en masse rækker over, hvor teksten ikke indeholder kr. (hvilket er fint), ligeledes markerer den ikke på, hvilken række fejlen sker. Kan til gengæld se, at den i debug mode siger, at fejlen ligger på følgende: beløb = Trim(xx(x - 1)), det er i hvert fald det, den markerer med gult.
Rem Version 2 Dim antalRækker As Integer, ræk As Integer Dim tekst As String, xx As Variant, x As Integer, beløb As Long Public Sub findKr() On Error GoTo fejl antalRækker = Cells(Rows.Count, "A").End(xlUp).Row
For ræk = 4 To antalRækker tekst = Range("A" & ræk) xx = Split(tekst, " ")
For x = 0 To UBound(xx) If xx(x) = "kr." Then beløb = Trim(xx(x - 1)) Range("J" & ræk) = beløb Exit For End If Next x Next ræk Exit Sub
fejl: MsgBox "Række " & ræk & ": " & tekst Resume Next End Sub
#15 Super! Nu virker det. Dog er der det lille problem, at den runder alle tallene af til heltal - jeg skal også have kommatal, f.eks. 5,5. Kan du hjælpe med det, så er dit svar løsningen.
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.