30. januar 2019 - 15:50Der 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 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.
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))
@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.
@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 :-)
@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?
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.
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.
=TRUE*1 =TRUE/1 =TRUE+0 plus flere. Hovedsagen er, at der skal udføres en regneoperation.
Synes godt om
Ny brugerNybegynder
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.