Avatar billede Magni Juniormester
07. september 2016 - 20:06 Der er 11 kommentarer og
1 løsning

filtrer celler der indeholder et bestemt ord

Kære alle
Håber der er nogen som kan hjælpe ?
Jeg har et relativt stort excelark indeholdende celler med tekst. Kan man ikke få excel til at kun at vise de celler som inderholder et bestemt ord ?

Jeg bruger:
excel:mac 2008
MacBook Pro, OSX v. 10.11.5

de bedste hilsner
Magni
Avatar billede Magni Juniormester
07. september 2016 - 20:20 #1
Glemte lige at oplyser at filtreringen skal ske på arket niveau, og ikke kun kolonne niveau. ;-)
Avatar billede excelent Ekspert
10. september 2016 - 11:12 #2
Tilføj en ekstra kolonne og indsæt følgende formel og kopier ned
=TÆL.HVIS(A2:M2;$P$1)
Ret A2:M2 samt $P$1 til aktuel forhold
I P1 indtaster du det ord du vil søge / filtrere
Sæt Autofilter på og filtrer i den nye kolonne og fjern flueben ved 0
Avatar billede Magni Juniormester
11. september 2016 - 08:24 #3
hej Excelent
Tak for dit forslag, når jeg bruger dit forslag og filtrere med udsagnet =, så findes der ingen celler.
Jeg går ud fra at din løsning forudsætter at der kun er ét ord i hver celle? I mit tilfælde er der måske 4 linier tekst, og der skal fines ét bestemt ord i teksten.
Til info har jeg imellemtiden opgraderet Excell til ver. 2016 for MAC, for at se om det kunne hjælpe mig?
Avatar billede store-morten Ekspert
11. september 2016 - 09:04 #4
Prøv at skrive: *ord* i $P$1
Avatar billede excelent Ekspert
11. september 2016 - 09:40 #5
Så vil jeg anbefale en vba-function som indsættes i et alm. modul

Function FindOrd(rng As Range, ord As String, space As String)
tal = 0
For Each c In rng
x = Split(c, space)
For t = 0 To UBound(x)
If x(t) = ord Then tal = tal + 1
Next
Next
FindOrd = tal
End Function

Så skriver du i den nye kolonnes første celle (hvor du vil teste) sikkert række 2

=FindOrd(A2:M2;$P$1;" ")

ret A2:M2 til aktuel, $P$1 er cellen hvor du har søgeord - ret til aktuel
" " angiver at der er mellemrum imellem ordene i dine tekster.
Avatar billede excelent Ekspert
11. september 2016 - 09:43 #6
Functionen returnerer et tal som angiver hvor ofte ordet forekommer
Så er det blot tilbage at filtrere cellerne med 0 fra
Avatar billede Magni Juniormester
11. september 2016 - 18:51 #7
Kære Excelent, du har fuldstændig ret i, at der ud for hver række kommer en angivelse af hvor mange hits der er.
Når jeg så filtrere har jeg tilbage ikke blot de rækker/celler hvori "ordet" indgår, men også de celler som er "False" hvis denne optræder i en rækken med en "TRUE" celle.
Jeg ville gerne kunne filtrere "False" celler fra, og lade "True" celler stå tilbage, uanset om de optræder i en række hvor det er et sandt udsagn?

Jeg er bestemt ikke nogen nørd til VBA, men har for interessens skyld lige downloadet en lille guide i VBA programmering, men kender du evt. gode læringsmaterialer om emnet?
Avatar billede excelent Ekspert
11. september 2016 - 20:11 #8
Hvis du foretrækker False/True frem for 0 eller +tal så :
Function FindOrd(rng As Range, ord As String, space As String)
tal = 0
For Each c In rng
x = Split(c, space)
For t = 0 To UBound(x)
If x(t) = ord Then tal = tal + 1
Next
Next
If tal > 0 Then tal = True Else tal = False
FindOrd = tal
End Function

Og når du så filtrerer false fra, så står tilbage de rækker hvor dit søgeord står i en eller flere af cellerne i samme række.
Så lyder det som om du også vil filtrere de celler/kolonner fra hvor ordet ikke indgår i samme række.
Hvad så hvis ordet indgår i en af de kolonner du filtrerer fra...?

Du kan altså kun filtrere hele række eller kolonner, ikke enkelte celler.
Eller har jeg misset noget ?
Avatar billede Magni Juniormester
12. september 2016 - 08:29 #9
Hej Excelent

Det var lige det  jeg frygtede, at jeg kun kan filtrere på hele rækker eller kolonner :-(
Kan man så bede programmet om at lave en kopi af arket (kan dog let gøres manuelt) og derefter bede programmet om at slette/rydde de celler som IKKE indeholder ordet ?
Avatar billede excelent Ekspert
12. september 2016 - 19:20 #10
Koden startes via ALT+F8
Opretter en kopi af arket, markerer celler som ikke indeholder ordet med rød baggrund. Du får valg mellem at slette eller fortryde. (husk aktuelle ark skal være aktiv-fremme)

Sub Find_Ord()

Sheets(ActiveSheet.Name).Copy After:=Sheets(ActiveSheet.Name)

Set rng = Range("A2:M28")
ord = Range("P1")

For Each c In rng
x = Split(c, " ")
For t = 0 To UBound(x)
If x(t) = ord Then tal = tal + 1
Next
If tal = 0 Then c.Interior.ColorIndex = 3
tal = 0
Next
If MsgBox("Skal de røde celler slettes ? ", vbYesNo) = vbYes Then
For Each c In rng
x = Split(c, " ")
For t = 0 To UBound(x)
If x(t) = ord Then tal = tal + 1
Next
If tal = 0 Then c.Formula = "=#N/A"
tal = 0
Next

rng.SpecialCells(xlCellTypeFormulas, 16).ClearContents

End If
Range("P1").Select
rng.Interior.ColorIndex = xlNone
End Sub
Avatar billede Magni Juniormester
12. september 2016 - 23:35 #11
KANON Excelent - 1000 tak for hjælpen.
Kender du til gode læringsmaterialer på området (VBA) ?
Avatar billede excelent Ekspert
13. september 2016 - 18:01 #12
Velbekom
Der findes masser af steder på nettet hvor man kan finde løsninger på forskellige problemstillinger. Søg fx på google på "excel forums vba".
Men ellers learn by doing.
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
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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