
Generisk formel
=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)
Sammendrag
For å slå opp den siste filversjonen i en liste, kan du bruke en formel basert på LOOKUP-funksjonen sammen med ISNUMBER og FIND-funksjonene. I eksemplet vist er formelen i celle G7:
=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)
hvor "filer" er det navngitte området B5: B11.
Kontekst
I dette eksemplet har vi en rekke filversjoner oppført i en tabell med dato og brukernavn. Merk at filnavn gjentas med en teller på slutten som revisjonsnummer - 001, 002, 003, etc.
Gitt et filnavn, vil vi hente navnet på den siste eller siste revisjonen. Det er to utfordringer:
- Utfordringen er at versjonskodene på slutten av filnavnene gjør det vanskeligere å matche filnavnet.
- Som standard returnerer Excel-matchformler den første kampen, ikke den siste kampen.
For å overvinne disse utfordringene, må vi bruke noen vanskelige teknikker.
Forklaring
Denne formelen bruker LOOKUP-funksjonen til å finne og hente det sist samsvarende filnavnet. Oppslagsverdien er 2, og oppslagsvektoren er opprettet med dette:
1/(ISNUMBER(FIND(G6,files)))
Inne i dette utdraget, FINN-funksjonen ser etter verdien i G6 inne i det nevnte området "filer" (B5: B11). Resultatet er en matrise som dette:
(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)
Her representerer tallet 1 et treff, og feilen #VALUE representerer et filnavn som ikke samsvarer. Denne matrisen går inn i ISNUMBER-funksjonen og kommer ut slik:
(TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;TRUE)
Feilverdier er nå FALSE, og tallet 1 er nå SANT. Dette overvinner utfordring nr. 1, vi har nå en matrise som viser tydelig hvilke filer i listen som inneholder filnavnet som er av interesse.
Deretter brukes matrisen som nevner med 1 som teller. Resultatet ser slik ut:
(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)
som går inn på LOOKUP som lookup_vector. Dette er en vanskelig løsning for å utfordre nr. 2. LOOKUP-funksjonen fungerer bare i omtrentlig kampmodus og ignorerer automatisk feilverdier. Dette betyr at med 2 som oppslagsverdi, vil VLOOKUP prøve å finne 2, mislykkes og gå tilbake til forrige nummer (i dette tilfellet samsvarer med den siste 1 i posisjon 7). Til slutt bruker LOOKUP 7 som en indeks for å hente den 7. filen i listen over filer.
Håndtering av blanke oppslag
Merkelig nok, returnerer FINN-funksjonen 1 hvis oppslagsverdien er en tom streng (""). For å beskytte deg mot en falsk kamp, kan du pakke inn formelen i IF og teste for en tom oppslag:
=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")