Innehållsförteckning
I handledningen förklaras syntaxen för Excel-funktionerna FIND och SEARCH och det ges formelexempel på avancerade användningsområden som inte är triviala.
I den förra artikeln behandlade vi grunderna i Excel-dialogrutan Sök och ersätt. I många situationer kan du dock vilja att Excel automatiskt hittar och hämtar data från andra celler utifrån dina kriterier. Låt oss därför titta närmare på vad Excel-sökfunktionerna har att erbjuda.
Excel FIND-funktionen
Funktionen FIND i Excel används för att återge positionen för ett visst tecken eller en delsträng i en textsträng.
Syntaxen för Excel-funktionen Hitta är följande:
FIND(find_text, within_text, [start_num])De två första argumenten är obligatoriska, det sista är valfritt.
- Hitta_text - det tecken eller den delsträng som du vill hitta.
- Inom_text - den textsträng som ska sökas i. Vanligtvis anges den som en cellreferens, men du kan också skriva strängen direkt i formeln.
- Start_nummer - Ett valfritt argument som anger från vilket tecken sökningen ska börja. Om det inte anges börjar sökningen från det första tecknet i strängen within_text.
Om FIND-funktionen inte hittar tecknet/tecknen i find_text returneras ett #VALUE! fel.
Exempelvis kan formeln =FIND("d", "find")
ger 4 eftersom "d" är den fjärde bokstaven i ordet " hitta ". Formeln =FIND("a", "find")
returnerar ett fel eftersom det inte finns något "a" i " hitta ".
Excel FIND-funktionen - saker att komma ihåg!
Om du vill använda en FIND-formel korrekt i Excel ska du tänka på följande enkla fakta:
- Funktionen FIND är Skiftlägeskänslig . Om du söker efter en matchning som inte tar hänsyn till stor bokstavsskillnader använder du funktionen SÖKNING.
- Funktionen FIND i Excel tillåter inte att man använder jokertecken .
- Om argumentet find_text innehåller flera tecken, returnerar funktionen FIND positionen för den första tecknet Formeln FIND("ap", "happy") ger till exempel 2 eftersom "a" är den andra bokstaven i ordet "happy".
- Om within_text innehåller flera förekomster Om du använder find_text, returneras den första förekomsten. FIND("l", "hello") returnerar till exempel 3, vilket är positionen för det första "l"-tecknet i ordet "hello".
- Om find_text är en tom sträng "", returnerar Excel formeln FIND det första tecknet i söksträngen.
- Excel-funktionen FIND returnerar #VALUE! fel om något av följande inträffar:
- Find_text finns inte i within_text.
- Start_num innehåller fler tecken än within_text.
- Start_num är 0 (noll) eller ett negativt tal.
Excel SEARCH-funktionen
SEARCH-funktionen i Excel liknar FIND i hög grad, eftersom den också returnerar platsen för en delsträng i en textsträng. Syntaxen och argumenten är desamma som för FIND:
SEARCH(find_text, within_text, [start_num])Till skillnad från FIND är funktionen SEARCH (sökning) Skiftlägeskänslig och det är möjligt att använda jokertecken, vilket visas i följande exempel.
Och här är några grundläggande formler för Excel SEARCH:
=SEARCH("market", "supermarket")
ger 6 eftersom delsträngen "market" börjar på det sjätte tecknet i ordet "supermarket".
=SEARCH("e", "Excel")
ger 1 eftersom "e" är det första tecknet i ordet "Excel", utan hänsyn till storleken.
Precis som FIND returnerar Excels funktion SEARCH felet #VALUE! om:
- Värdet för argumentet find_text har inte hittats.
- Argumentet start_num är större än längden på within_text.
- Start_num är lika med eller mindre än noll.
Längre fram i den här handledningen hittar du några fler meningsfulla formelexempel som visar hur du använder SEARCH-funktionen i Excel-arbetsblad.
Excel FIND vs. Excel SEARCH
Som redan nämnts är FIND- och SEARCH-funktionerna i Excel mycket lika varandra när det gäller syntax och användningsområden. De har dock ett par skillnader.
1. Skiftlägeskänslig FIND vs. skiftlägeskänslig SEARCH
Den viktigaste skillnaden mellan Excel-funktionerna SEARCH och FIND är att SEARCH är okänslig för stora och små bokstäver, medan FIND är okänslig för små och stora bokstäver.
SEARCH("e", "Excel") ger t.ex. 1 eftersom det inte tar hänsyn till storleken på "E", medan FIND("e", "Excel") ger 4 eftersom det tar hänsyn till storleken på "E".
2. Sök med jokertecken
Till skillnad från FIND accepterar Excel SEARCH-funktionen jokertecken i argumentet find_text:
- Ett frågetecken (?) matchar ett tecken, och
- En asterisk (*) matchar alla serier av tecken.
För att se hur det fungerar på riktiga data, kan du ta följande exempel:
Som du ser i skärmdumpen ovan returnerar formeln SEARCH("function*2013", A2) positionen för det första tecknet ("f") i delsträngen om den textsträng som refereras till i argumentet within_text innehåller både "function" och "2013", oavsett hur många andra tecken det finns mellan dem.
Tips: Om du vill hitta ett frågetecken (?) eller en asterisk (*) skriver du en tilde (~) före motsvarande tecken.
Excel exempel på formler för FIND och SEARCH
I praktiken används Excel-funktionerna FIND och SEARCH sällan ensamma, utan oftast i kombination med andra funktioner, t.ex. MID, LEFT eller RIGHT, och följande formelexempel visar några exempel på användningsområden i verkligheten.
Exempel 1. Hitta en sträng som föregår eller följer ett visst tecken.
Det här exemplet visar hur du kan hitta och extrahera alla tecken i en textsträng till vänster eller höger om ett visst tecken. För att göra det lättare att förstå kan du tänka på följande exempel.
Anta att du har en kolumn med namn (kolumn A) och att du vill flytta förnamnet och efternamnet till separata kolumner.
För att få fram förnamnet kan du använda FIND (eller SEARCH) tillsammans med funktionen LEFT:
=VÄNSTER(A2, FIND(" ", A2)-1)
eller .
=VÄNSTER(A2, SEARCH(" ", A2)-1)
Som du säkert vet returnerar Excel-funktionen LEFT det angivna antalet tecken längst till vänster i en sträng. Du använder funktionen FIND för att bestämma positionen för ett mellanslag (" ") så att LEFT-funktionen vet hur många tecken den ska extrahera. Därefter drar du av 1 från mellanslagets position eftersom du inte vill att mellanslaget ska ingå i det returnerade värdet.
För att få fram efternamnet använder du en kombination av funktionerna RIGHT, FIND / SEARCH och LEN. Funktionen LEN behövs för att få fram det totala antalet tecken i strängen, från vilket du drar av mellanslagets position:
=RIGHT(A2,LEN(A2)-FIND(" ",A2))
eller .
=RIGHT(A2,LEN(A2)-SEARCH(" ",A2))
Följande skärmdump visar resultatet:
För mer komplexa scenarier, t.ex. för att extrahera ett mellannamn eller dela upp namn med suffix, se Hur man delar celler i Excel med hjälp av formler.
Exempel 2. Hitta den N:e förekomsten av ett visst tecken i en textsträng.
Anta att du har några textsträngar i kolumn A, t.ex. en lista över SKU:er, och att du vill hitta positionen för 2:a streck i en sträng. Följande formel fungerar utmärkt:
=FIND("-", A2, FIND("-",A2)+1)
De två första argumenten är lätta att tolka: sök efter ett bindestreck ("-") i cell A2. I det tredje argumentet (start_num) bäddar du in en annan FIND-funktion som säger åt Excel att börja söka från och med det tecken som kommer direkt efter den första förekomsten av bindestreck (FIND("-",A2)+1).
För att återställa positionen för Tredje händelsen Du bäddar in ovanstående formel i argumentet start_num i en annan FIND-funktion och lägger till 2 till det returnerade värdet:
=FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2) +2)
Ett annat och förmodligen enklare sätt att hitta den N:e förekomsten av ett visst tecken är att använda Excel-funktionen FIND i kombination med CHAR och SUBSTITUTE:
=FIND(CHAR(1),SUBSTITUTE(A2,"-",CHAR(1),3))
Där "-" är tecknet i fråga och "3" är den nionde förekomsten som du vill hitta.
I formeln ovan ersätter SUBSTITUTE-funktionen den tredje förekomsten av bindestreck ("-") med CHAR(1), som är det oskrivbara tecknet "Start of Heading" i ASCII-systemet. I stället för CHAR(1) kan du använda vilket annat oskrivbart tecken som helst från 1 till 31. Sedan returnerar FIND-funktionen positionen för det tecknet i textsträngen. Den allmänna formeln är alltså följande:
Vid första anblicken kan det tyckas att formlerna ovan inte har något praktiskt värde, men nästa exempel visar hur användbara de är för att lösa verkliga uppgifter.
Observera: Kom ihåg att Excel-funktionen FIND är skiftlägeskänslig. I vårt exempel gör det ingen skillnad, men om du arbetar med bokstäver och vill ha en Skiftlägeskänslig använda funktionen SEARCH i stället för FIND.
Exempel 3. Extrahera N tecken efter ett visst tecken
Om du vill hitta en delsträng av en viss längd i en textsträng använder du Excel FIND eller Excel SEARCH i kombination med MID-funktionen. Följande exempel visar hur du kan använda sådana formler i praktiken.
Om vi antar att du vill hitta de tre första tecknen efter det första bindestrecket i vår lista över SKU:er och ta upp dem i en annan kolumn.
Om gruppen tecken som föregår det första strecket alltid innehåller samma antal tecken (t.ex. 2 tecken) skulle detta vara en trivial uppgift. Du kan använda funktionen MID för att återge 3 tecken från en sträng, med början på position 4 (genom att hoppa över de 2 första tecknen och ett streck):
=MID(A2, 4, 3)
Översatt till engelska lyder formeln: "Titta i cell A2, börja extrahera från tecken 4 och återge 3 tecken".
Men i verkliga arbetsblad kan den delsträng som du vill extrahera börja var som helst i textsträngen. I vårt exempel kanske du inte vet hur många tecken som föregår det första bindestrecket. För att hantera den här utmaningen använder du funktionen FIND för att bestämma startpunkten för den delsträng som du vill extrahera.
FIND-formeln för att återge positionen för det första strecket är följande:
=FIND("-",A2)
Eftersom du vill börja med tecknet som följer efter bindestrecket lägger du till 1 till det returnerade värdet och bäddar in ovanstående funktion i det andra argumentet (start_num) i MID-funktionen:
=MID(A2, FIND("-",A2)+1, 3)
I det här scenariot fungerar Excel-funktionen SEARCH lika bra:
=MID(A2, SEARCH("-",A2)+1, 3)
Det är bra, men vad händer om gruppen tecken efter det första strecket innehåller ett annat antal tecken? Hmm... det kan bli ett problem:
Som du ser i skärmdumpen ovan fungerar formeln perfekt för raderna 1 och 2. I raderna 4 och 5 innehåller den andra gruppen fyra tecken, men endast de tre första tecknen returneras. I raderna 6 och 7 finns det endast två tecken i den andra gruppen, och därför returnerar vår Excel Search-formel ett bindestreck efter dem.
Om du vill återvända Alla tecken mellan den första och andra förekomsten. av ett visst tecken (bindestreck i det här exemplet), hur skulle du då gå tillväga? Här är svaret:
=MID(A2, FIND("-",A2)+1, FIND("-", A2, FIND("-",A2)+1) - FIND("-",A2)-1)
För att bättre förstå denna MID-formel ska vi undersöka dess argument ett efter ett:
- Första argumentet (text). Det är textsträngen som innehåller de tecken du vill extrahera, cell A2 i det här exemplet.
- Andra argumentet (start_position). Anger positionen för det första tecknet som du vill extrahera. Du använder funktionen FIND för att hitta det första strecket i strängen och lägger till 1 till det värdet eftersom du vill börja med tecknet som följer efter strecket: FIND("-",A2)+1.
- Tredje argumentet (num_chars). Anger det antal tecken du vill återge. I vår formel är detta den svåraste delen. Du använder två FIND- (eller SEARCH-) funktioner, den ena bestämmer positionen för det första strecket: FIND("-",A2). Och den andra returnerar positionen för det andra strecket: FIND("-",A2, FIND("-",A2)+1). Sedan subtraherar du det första från det senare och subtraherar sedan 1, eftersom du inte vill attDu får alltså antalet tecken mellan det första och andra strecket, vilket är precis vad vi letar efter. Du matar alltså in detta värde i num_chars-argumentet i MID-funktionen.
På samma sätt kan du returnera 3 tecken efter det andra strecket:
=MID(A2, FIND("-",A2, FIND("-", A2, FIND("-",A2)+1) +2), 3)
Eller ta ut alla tecken mellan det andra och tredje strecket:
=MID(A2, FIND("-", A2, FIND("-",A2)+1)+1, FIND("-",A2, FIND("-", A2, FIND("-", A2, FIND("-",A2)+1) +2) - FIND("-", A2, FIND("-",A2)+1)-1)
Exempel 4. Hitta text mellan parenteser
Anta att du har en lång textsträng i kolumn A och att du vill hitta och extrahera endast den text som är innesluten i (parenteser).
För att göra detta behöver du MID-funktionen som returnerar det önskade antalet tecken från en sträng, och antingen Excel FIND- eller SEARCH-funktionen för att bestämma var du ska börja och hur många tecken du ska extrahera.
=MID(A2,SEARCH("(",A2)+1, SEARCH(")",A2)-SEARCH("(",A2)-1)
Logiken i den här formeln liknar den som vi diskuterade i det föregående exemplet. Återigen är den mest komplexa delen det sista argumentet som talar om för formeln hur många tecken som ska returneras. Det ganska långa uttrycket i num_chars-argumentet gör följande:
- Först hittar du positionen för den avslutande parentesen:
SEARCH(")",A2)
- Därefter bestämmer du var den inledande parentesen ska stå:
SEARCH("(",A2)
- Sedan räknar du ut skillnaden mellan positionerna för den avslutande och den öppnande parentesen och subtraherar 1 från det talet, eftersom du inte vill ha någon av parenteserna i resultatet:
SEARCH(")",A2)-SEARCH("("(",A2))-1
Naturligtvis finns det inget som hindrar dig från att använda Excel-funktionen FIND istället för SEARCH, eftersom det inte spelar någon roll om man skiljer mellan stora och små bokstäver i det här exemplet.
Förhoppningsvis har den här handledningen kastat lite ljus över hur man använder sök- och sökfunktionen i Excel. I nästa handledning kommer vi att undersöka REPLACE-funktionen närmare, så håll ögonen öppna. Tack för att du läste!
Ladda ner övningsboken
Exempel på formler för FIND och SEARCH