
Generisk formel
=MATCH(1,EXACT(LEFT(A1,255),LEFT(rng,255))*EXACT(MID(A1,256,255),MID(rng,256,255)),0)
Sammanfattning
För att matcha text som är längre än 255 tecken med MATCH-funktionen kan du använda VÄNSTER-, MID- och EXAKT-funktionerna för att analysera och jämföra text, som förklaras nedan. I exemplet som visas är formeln i G5:
=MATCH(1,EXACT(LEFT(E5,255),LEFT(data,255))*EXACT(MID(E5,256,255),MID(data,256,255)),0)
där data är det namngivna området B5: B15.
Obs: denna formel utför en skiftlägeskänslig jämförelse.
Förklaring
MATCH-funktionen har en gräns på 255 tecken för uppslagsvärdet. Om du försöker använda längre text returnerar MATCH ett #VALUE-fel.
För att kringgå denna gräns kan du använda boolesk logik och funktionerna VÄNSTER, MIDT och EXAKT för att analysera och jämföra text.
Strängen vi testar med i cell E5 är 373 tecken enligt följande:
Lorem ipsum dolor amet satte en fågel på det listicle trust fund, unicorn vaporware cykelrättigheter du förmodligen inte har hört talas om dem mustasch. Foder helvetica crusty semiotics faktiskt arv. Tumblr poutine unicorn godard try-hard innan de sålde ut narwhal meditation kitsch väst fixie twee bokstavligen hoodie retro. Messenger väska helvete av crusty green juice hantverkare.
I grunden är detta bara en MATCH-formel, inställd på att leta efter 1 i exakt matchningsläge:
=MATCH(1,array,0)
Matrisen i formeln ovan innehåller endast 1 och 0, och 1 representerar matchande text. Denna matris är konstruerad av följande uttryck:
EXACT(LEFT(E5,255),LEFT(data,255))*EXACT(MID(E5,256,255),MID(data,256,255))
Själva uttrycket har två delar. Till vänster har vi:
EXACT(LEFT(E5,255),LEFT(data,255)) // compare first 255 chars
Här extraherar VÄNSTER-funktionen de första 255 tecknen från E5 och från alla celler i namngivna områdesdata (B5: B15). Eftersom data innehåller 11 textsträngar kommer LEFT att generera 11 resultat.
EXAKT-funktionen jämför sedan den enda strängen från E5 med alla de 11 strängarna som returneras av VÄNSTER. EXACT returnerar 11 resultat i en matris så här:
(FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE)
Till höger har vi ett annat uttryck:
EXACT(MID(E5,256,255),MID(data,256,255) // compare next 255 chars
Detta är exakt samma tillvägagångssätt som används med VÄNSTER, men här använder vi MID-funktionen för att extrahera de kommande 255 tecknen. EXAKT-funktionen returnerar igen 11 resultat:
(TRUE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;FALSE;TRUE;FALSE)
När de två matriserna ovan multipliceras med varandra tvingar matteoperationen de sanna FALSKA värdena till 1 och 0. Efter reglerna för boolesk aritmetik är resultatet en matris som denna:
(0;0;0;0;0;0;0;0;0;1;0)
som returneras direkt till MATCH som uppslagsmatris. Formeln kan nu lösas till:
=MATCH(1,(0;0;0;0;0;0;0;0;0;1;0),0)
MATCH-funktionen utför en exakt matchning och returnerar ett slutresultat på 10, vilket representerar den tionde textsträngen i B5: B15.
Obs! Textlängden som visas i exemplet beräknas med LEN-funktionen. Den visas endast som referens.
Skiftlägeskänsligt alternativ
EXAKT-funktionen är skiftlägeskänslig, så formeln ovan respekterar skiftläge.
För att göra en skiftlägeskänslig matchning med lång text använder du funktionerna ISNUMBER och SÖK på följande sätt:
=MATCH(1,ISNUMBER(SEARCH(LEFT(E5,255),LEFT(data,255)))*ISNUMBER(SEARCH(MID(E5,256,255),MID(data,256,255))),0)
Den övergripande strukturen för denna formel är identisk med exemplet ovan, men SEARCH-funktionen används istället för EXAKT för att jämföra text (förklaras i detalj här).
Till skillnad från EXACT stöder SEARCH-funktionen också jokertecken.
Med XMATCH
XMATCH-funktionen har inte samma 255 teckenbegränsning som MATCH. För att utföra en liknande matchning på långtext med XMATCH kan du använda den mycket enklare formeln nedan:
=XMATCH(E5,data)
Obs! XMATCH stöder jokertecken, men är inte skiftlägeskänsligt.