Avatar billede NeuBee Juniormester
30. januar 2019 - 15:50 Der er 13 kommentarer og
1 løsning

Skabe avanceret søgefunktion via formel

Hej derude.

Jeg leder efter en klog person, der kan hjælpe mig med en formel.

Beskrivelse
Jeg har et kæmpe dataark, hvor jeg gerne vil kunne skrive op til 6 ord, som, hvis indeholdt i en beskrivelse, returnerer et "sandt", og ellers "falsk".

Eksempel
Vi har en kolonne A med en beskrivelse af produktet. Fx celle A1 "rød cykel med lygter" eller celle A2 "blå bil med horn". Der er 76.000 rækker med sådanne beskrivelser.

Ved siden af laver jeg en kolonne B, hvor jeg i de 6 øverste rækker gerne vil kunne indtaste mine 'søgeord'. Lad os sige, jeg i øverste række skriver "cykel" og i næste række skriver "horn". Dvs. det er mine to søgeord og de fire felter nedenunder er tomme.

Nu vil jeg gerne lave en formel i en tredje kolonne C, der for hver enkelt række returnerer et "Sandt", hvis ordet "cykel" og/eller "horn" indgår som et af ordene i beskrivelsen. Dvs. at søgningen skal foretages for hver enkelt række i arket.

I mit tilfælde skulle både C1 og C2 returnerer et "Sandt", da begge beskrivelser indeholder et af ordene.

Havde jeg indtastet alle 6 søgeord, skulle kolonne C returnerer et "Sandt" såfrem minimum ét af søgeordene figurerer et sted i den tilsvarende rækkes beskrivelse.

Krav til formlen
- Ikke alle 6 søgeord bliver nødvendigvis udfyldt.
- Der er flere ord i cellen med beskrivelser

Jeg håber, der er nogen der kan hjælpe.

Mvh.
Johan
Avatar billede NeuBee Juniormester
30. januar 2019 - 15:57 #1
Jeg har selv forsøgt at anvende SØG-funktionen og havde stor succes med det, indtil jeg fandt ud af, at den returnerer "1", hvis søgefeltet er tomt. Jeg kunne ikke finde en workaround, sådan så den returnerer #VÆRDI, hvis søgefeltet er tomt, ligesom hvis søgeordet ikke er indeholdt i beskrivelsen.
Avatar billede Jan Hansen Ekspert
30. januar 2019 - 16:36 #2
Mon =Find($B$1;A1:A80000)

kombineret med Eller() og evt lavet som Matrix formel

Matrix formler er der andre der har meget bedre styr på end mig (Har svært ved at gennemskue dem)

Jan
Avatar billede store-morten Ekspert
30. januar 2019 - 18:11 #3
Ikke kønt:
=ELLER(HVIS(TÆL.HVIS(A1;HVIS($B$1="";FALSK;"*"&$B$1&"*"));SAND;FALSK);HVIS(TÆL.HVIS(A1;HVIS($B$2="";FALSK;"*"&$B$2&"*"));SAND;FALSK);HVIS(TÆL.HVIS(A1;HVIS($B$3="";FALSK;"*"&$B$3&"*"));SAND;FALSK);HVIS(TÆL.HVIS(A1;HVIS($B$4="";FALSK;"*"&$B$4&"*"));SAND;FALSK);HVIS(TÆL.HVIS(A1;HVIS($B$5="";FALSK;"*"&$B$5&"*"));SAND;FALSK);HVIS(TÆL.HVIS(A1;HVIS($B$6="";FALSK;"*"&$B$6&"*"));SAND;FALSK))
Avatar billede xl-Enthusiast Ekspert
30. januar 2019 - 20:29 #4
=SUMPRODUKT(--ER.TAL(SØG({"lygter";"horn"};A1)))>0
Avatar billede NeuBee Juniormester
31. januar 2019 - 10:23 #5
@Jan Hansen, FIND-funktionen kan ikke arbejde med mere end én celle, desværre.

@store-morten, den virker desværre ikke.

@xl-Enthusiast det har nok været den mest brugbare løsning. Problemet er bare, at man skal skrive søgeordene ind i formlen istedet for at kunne referere til søgeordene fra kolonne B.
Avatar billede store-morten Ekspert
31. januar 2019 - 10:33 #6
Hvodan virker den forkert?
Avatar billede xl-Enthusiast Ekspert
31. januar 2019 - 10:37 #7
Det er ikke et problem. Skriv dine søgeord i B1:B6 og brug:

=SUMPRODUCT(--ISNUMBER(SEARCH(B1:B6;A1)))>0

dansk

=SUMPRODUKT(--ER.TAL(SØG(B1:B6;A1)))>0
Avatar billede NeuBee Juniormester
31. januar 2019 - 10:38 #8
@store-morten jeg ved ikke, hvad jeg gjorde før, men det har i hvert fald været helt ude i hampen. Jeg har lige prøvet igen, og den fungerer helt perfekt!

Tusind tak for hjælpen. Jeg giver en bajer, skulle vi nogensinde mødes i lufthavnen :-)
Avatar billede NeuBee Juniormester
31. januar 2019 - 10:47 #9
@xl-enthusiast, problemet med SØG-funktionen er, at den returnerer SAND, hvis et søgefelt står tomt. Af ren nysgerrighed, hvad gør de to bindestreger før ER.TAL?
Avatar billede xl-Enthusiast Ekspert
31. januar 2019 - 11:11 #10
Den situation kan jeg ikke genskabe.

Hvis du har  "rød cykel med lygter" i A1, i B1 "cykel", i B2 horn i B2 "abekat", i B4 "giraf", i B5 "løve" og i B6 "tiger", så prøv følgende:

Vælg cellen med formlen og marker i formelfeltet med musen præcist følgende del af formlen: IR.TAL(SØG($B$1:$B$6;A1)), tryk på F9 og du vil se:
{TRUE;FALSE;FALSE;FALSE;FALSE;FALSE} (du vil se SAND i stedet for TRUE og FALSK i stedet for FALSE).
Prøv herefter at markere præcist følgende del af formlen:
-ER.TAL(SØG($B$1:$B$6;A1) og tryk på F9. Du vil nu se: {-1;0;0;0;0;0}.
Prøv endelig at markere præcist følgende del af formlen:
--ER.TAL(SØG($B$1:$B$6;A1) og tryk på F9. Du vil se  {1;0;0;0;0;0}. Herefter er formlen reduceret til =SUMPRODUKT({1;0;0;0;0;0})>0 der returnerer TRUE/SAND.
Avatar billede xl-Enthusiast Ekspert
31. januar 2019 - 11:31 #11
I øvrigt så er hverken min formel eller store-mortens fuldstændig "skudsikre". Hvis der for eksempel står:

A1: rød cykel med baglygter
A2: blå bil med næsehorn

så vil begge formler stadigvæk returnere SAND, hvilket måske/måske ikke er hvad, du ønsker.
Avatar billede NeuBee Juniormester
31. januar 2019 - 11:46 #12
Det har du helt ret i, det kan i nogle tilfælde være en begrænsning. Men sådan vil det jo også være i tilfældet med Autofilter-søgning o.l.

Jeg er lidt nysgerrig efter, hvad de to bindestreger havde af formål før "ER.TAL" i din formel tidligere?
Avatar billede xl-Enthusiast Ekspert
31. januar 2019 - 12:28 #13
Det var faktisk det jeg forsøgte at forklare i #10, men det har jeg helt åbenbaret ikke været særlig god til.

En TRUE/SAND værdi konverteres til 1 når den indgår i en regneoperation.
EN FALSE/FALSK værdi konverteres til 0 når den indgår i en regneoperation.

Hvis du har en formel som: =TRUE så returnerer den TRUE.
Hvis du ændrer formlen så den indeholder en regneoperation så som =-TRUE så vil du se, at Excel returnerer -1 (fordi der kun er et enkelt minustegn). Hvis du ændrer formlen til =--TRUE så reurnerer formlen 1. Det kan i en vis forstand sammenlignes med at (-1)*(-1) = 1.
Avatar billede xl-Enthusiast Ekspert
31. januar 2019 - 12:30 #14
I stedet for --TRUE kunne du også have brugt:

=TRUE*1
=TRUE/1
=TRUE+0
plus flere. Hovedsagen er, at der skal udføres en regneoperation.
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