Oprettet ons. d. 12. juli 2006 kl. 12:31:34

midk
midk (12.755 point. Point ude: 60)

Tæl ord i celle

Hej,

Findes der en smart måde at tælle, hvor mange gange et bestemt ord optræder i en tekststreng i en celle?

Eks:
A1: i
A2: Jeg kan ikke finde ud af at tælle ord i tekststrenge i en celle.

Hvorden tæller man ordet fra A1 (i) i teksten i A2. Altså en formel der i dette tilfælde retunerer: 2.

På forhånd tak!

Skrevet ons. d. 12. juli 2006 kl. 13:25:03| #1

kvadratrodenaf1
kvadratrodenaf1 (24.444 point)
Jeg kan lige umiddelbart komme med 2 løsninger..

den ene er ved brug af excels worksheetfunktioner. i dette eksempel søges der for op til 3 matches.. du kan bare addere flere linjer hvis det er nødvendigt. Ulempe: fylder meget i arket + man skal manuelt addere flere linjer, hvis man f.eks. søger efter 4 matches i stedet for de 3 der angivet her, Fordel: Kræver ikke at makroer er aktiveret ved opstart.

A3: =COUNT(B1:B3)
B1: =SEARCH(A$1;A$2)
B2: =SEARCH(A$1;A$2;B1 + 1)
B3: =SEARCH(A$1;A$2;B2 + 1)


Den anden (og i mine øjne bedre) løsning er en visual basic funktion (der ikke har nogen umiddelbare begrænsninger for antal matches): Fordele og ulemper er det modsatte af den anden løsnings fordele og ulemper: Denne løsning fylder ikke i arket, men der skal accepterers makroer ved opstart.

Function find_matches(ByRef string_1 As String, ByRef string_2 As String) As Integer
    Dim start, count As Integer
    start = 1
    Do While InStr(start, string_1, string_2)
        start = InStr(start, string_1, string_2) + 1
        count = count + 1
    Loop
    find_matches = count
End Function

i A3: =find_matches(A2:A1)

Bare spørg hvis du skal have hjælp til at implementere en af løsningerne i dit ark.

Det er muligt der er en worksheetfunktion, der kan det samme, men den har jeg ikke kunnet finde.

/1.

Skrevet ons. d. 12. juli 2006 kl. 13:26:56| #2

mrjh
mrjh (27.415 point)
Det kan klares med en makro. Jeg tror ikke der findes en regnearksfunktion til det.

Stil dig i dit søgeord umiddelbart i cellen til højre for den tekststreng du søger i og kør makroen

Sub tælord()
ord = ActiveCell.Offset(, -1).Value
søgeord = ActiveCell.Value
mellem = Replace(ord, søgeord, ",")
y = 0
    For x = 1 To 100
    If Mid(mellem, x, 1) = "," Then
    y = y + 1
    End If
    Next x
ActiveCell.Value = y
End Sub

Skrevet ons. d. 12. juli 2006 kl. 13:31:49| #3

bak
bak (97.305 point)
=LÆNGDE(A2)-LÆNGDE(UDSKIFT(A2;" " & A1 & " ";"  "&GENTAG(" "; LÆNGDE(A1)-1)))

Skrevet ons. d. 12. juli 2006 kl. 13:36:10| #4

tida
tida (20.445 point)
flot formel - hvis der står "i" i første position syntes jeg ikke den kommer med, kan det passe ?

Skrevet ons. d. 12. juli 2006 kl. 13:41:32| #5

kvadratrodenaf1
kvadratrodenaf1 (24.444 point)
Hvilken løsning mener du?

/1.

Skrevet ons. d. 12. juli 2006 kl. 13:45:10| #6

bak
bak (97.305 point)
Det gør der ikke, fordi jeg fik lavet den lidt hurtig.
Den søger kun på ordet hvis det er omgivet af " " på begge sider.
dvs. start og slut funker ikke (endnu)

Skrevet ons. d. 12. juli 2006 kl. 13:50:16| #7

mrjh
mrjh (27.415 point)
=(LÆNGDE(A2)-LÆNGDE(UDSKIFT(A2;A1;"")))/LÆNGDE(A1)

Skrevet ons. d. 12. juli 2006 kl. 13:51:00| #8

tida
tida (20.445 point)
jeg mente bak's formel. Jeg leger lige testperson da jeg selv kunne bruge nævnte formel. Jeg syntes dog stadig ikke den tæller helt som den skal hos mig, hvis jeg prøver at fylde flere "i"er på inde i midten.

Skrevet ons. d. 12. juli 2006 kl. 13:52:22| #9

tida
tida (20.445 point)
yes mrjh - den fungerer flot.

Skrevet ons. d. 12. juli 2006 kl. 13:55:53| #10

bak
bak (97.305 point)
=SUM((LÆNGDE(" "& A2 &" ")-LÆNGDE(UDSKIFT(" "& A2 &" ";" "& A1 &" ";"")))/(LÆNGDE(A1)+2))

indtastet som arrayformel (afslut indtastning med ctrl-shift-enter istedet for bare enter, således at formlen automatisk får tuborgklammer omkring {})

Skrevet ons. d. 12. juli 2006 kl. 13:57:51| #11

bak
bak (97.305 point)
mrjh-> som jeg kan se tæller din formel alle forekomster af i og ikke kune som helt ord.

Skrevet ons. d. 12. juli 2006 kl. 14:04:56| #12

bak
bak (97.305 point)
Min formel behøver alligevel ikke indtastes som arrayformel, den er bare helt almindelig... jeg er vist blevet lidt rusten :-)

Skrevet ons. d. 12. juli 2006 kl. 14:17:09| #13

mrjh
mrjh (27.415 point)
Fuldstændig korrekt bak. Du har ret (som altid) :-)

Skrevet ons. d. 12. juli 2006 kl. 14:42:44| #14

midk
midk (12.755 point)
Tak for jeres svar allesammen. Virkeligt imponerende. Jeg hælder mest til Bak's løsning, men kvadratrodenaf1's løsning med en VB funktion er dog også brugbar, jeg foretrække dog formler.

Men jeg har lige en twist: Jeg giver mine points til den bedste løsning, hvor der ikke skelnes mellem store og små bogstaver!

Tak!
midk

Skrevet ons. d. 12. juli 2006 kl. 15:11:47| #15

bak
bak (97.305 point)
=SUM((LÆNGDE(" " & A2 & " ") - LÆNGDE(UDSKIFT(" " & SMÅ.BOGSTAVER(A2) & " "; " "& SMÅ.BOGSTAVER(A1) & " ";"")))/(LÆNGDE(A1)+2))

Skrevet ons. d. 12. juli 2006 kl. 15:16:29| #16

mrjh
mrjh (27.415 point)
Øv nåede det ikke :-(
Formlen har dog en lille hage. Hvis ordet du søger efter står lige efter hindanden bliver resultatet forkert. Har prøvet at løse det, men det er endnu ikke lykkedes.

Skrevet ons. d. 12. juli 2006 kl. 15:23:58| #17

bak
bak (97.305 point)
Rigtigt mrjh. godt set.

Skrevet ons. d. 12. juli 2006 kl. 16:58:36| #18

mrjh
mrjh (27.415 point)
Prøv lige denne. Virker også ved ord lige efter hindanden (ihvertfald i mine tests)

=(LÆNGDE(A2)*2-LÆNGDE(UDSKIFT(A2;" "&A1;""))-LÆNGDE(UDSKIFT(A2;A1&" ";"")))/(LÆNGDE($A$1)+1)-(LÆNGDE(A2)-LÆNGDE(UDSKIFT(A2;A1;"")))/LÆNGDE(A1)

Skrevet ons. d. 12. juli 2006 kl. 16:59:41| #19

mrjh
mrjh (27.415 point)
Skal så selvfølgelig indlejres med funktionen små.bogstaver

Skrevet tor. d. 13. juli 2006 kl. 08:50:13| #20

janvogt
janvogt (56.368 point)
Denne kan også bruges:
=LÆNGDE(UDSKIFT(FJERN.OVERFLØDIGE.BLANKE(A1);TEGN(32);TEGN(32)&TEGN(32)) )-LÆNGDE(FJERN.OVERFLØDIGE.BLANKE(A1))+1

Skrevet tor. d. 13. juli 2006 kl. 08:52:51| #21

janvogt
janvogt (56.368 point)
Undskyld, jeg fik vist ikke læst det hele rigtigt.
Min formel tæller antal ord i en celle (A1). Det var ikke det der blev spurgt om ....

Skriv et indlæg




Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] [img]link til billede[/img]
Web- og emailadresser omdannes automatisk til links

Log ind

   


Seneste spørgsmål

Diagram i Excel

Oprettet den 24. maj 2013 kl. 22.40
h_s giver 200 point for svar | Giv et svar »

Kan man bruge anden kode i Excel end VBA og ...

Oprettet den 24. maj 2013 kl. 14.32
anthonsen giver 30 point for svar | Giv et svar »

Hjælp til formel

Oprettet den 24. maj 2013 kl. 12.48
boro23 giver 30 point for svar | Giv et svar »








Tips & Tricks fra PC World

Teaser billede

Fem smarte funktioner i din Mac som du sikkert ikke kender

Her har du fem muligheder for at tweake din Mac på en fed måde.


Anmeldelser fra PC World

Teaser billede

Test: Samsung Galaxy S4 er et hit - trods gøglertricks

Kan Samsung beholde førertrøjen i det store Android-race? Galaxy S4 er smækfyldt med innovative funktioner, men også med en del gøgl. Er det for meget? Få vores dom over Samsungs nye topmodel.


Seneste blogindlæg

Teaser billede

Tvangslukke spørgsmål: Hvad er den bedste løsning?

Hej Vi har mange åbne spørgsmål på Eksperten. Vi ville gerne tvangslukke dem - så et spørgsmål efter f.eks. 6 måneder lukkes. Men der er et par uklarheder som ville være gode at få lidt input til:...


Nyheder fra PC World

Teaser billede

Ny opfindelse: Oplad din mobil på 20 sekunder

Måske er det snart slut med at lade mobilen op hver aften. Med ny opfindelse kan telefonen få fuld energi på sølle 20 sekunder.


Nyheder fra Computerworld

Teaser billede

Galleri: De 10 vildeste datacentre i verden

I en gammel kirke, i et oppusteligt telt, på nedlagte militæranlæg eller midt i ørkenen. Der er ingen grænser for, hvor man kan banke et datacenter op. Her er de 10 sejeste anlæg i verden. I...


IT Kurser
Samarbejdspartnere

Udgiver · © 2013 IDG Danmark A/S · Hørkær 18 · 2730 Herlev · Tlf.: 77 300 300 · Fax: 77 300 301 · Brug af personoplysninger