Excel-formel: Sökning efter senaste filrevision -

Innehållsförteckning

Generisk formel

(=MAX(IF(ISERROR(SEARCH(H5&"*",files)),0,ROW(files)-ROW(INDEX(files,1,1))+1)))

Sammanfattning

För att hitta positionen (raden) för den senaste filversionen i en tabell kan du använda en formel baserad på flera Excel-funktioner: MAX, IF, ISERROR, ROW och INDEX.

I exemplet som visas är formeln i cell H6:

(= MAX (OM (FEL (SÖK (H5 & "*", filer)), 0, RAD (filer) -ROW (INDEX (filer, 1,1)) + 1)))

där "filer" är det namngivna intervallet C4: C11.

Obs: detta är en matrisformel och måste anges med kontroll + skift + enter.

Sammanhang

I det här exemplet har vi ett antal filversioner listade i en tabell med datum och användarnamn. Observera att filnamn upprepas, förutom koden som läggs till i slutet för att representera versionen ("CA", "CB", "CC", "CD", etc.).

För en viss fil vill vi hitta positionen (radnummer) för den senaste versionen. Detta är ett knepigt problem, eftersom versionskoderna i slutet av filnamnen gör det svårare att matcha filnamnet. Som standard kommer Excel-matchningsformler att returnera den första matchningen, inte den senaste matchen, så vi måste kringgå den utmaningen med några knepiga tekniker.

Förklaring

Kärnan i denna formel bygger vi en lista med radnummer för en viss fil. Sedan använder vi MAX-funktionen för att få det största radnumret, vilket motsvarar den senaste versionen (sista förekomsten) av den filen.

För att hitta alla förekomster av en viss fil använder vi funktionen SÖK, konfigurerad med asterisk (*) jokertecken för att matcha filnamnet, och ignorerar versionskoderna. SÖKNING kommer att kasta ett VÄRDE fel när text inte hittas, så vi slår in sökningen i FEL:

ISERROR(SEARCH(H5&"*",files))

Detta resulterar i en uppsättning SANT och FALSKA värden så här:

(FALSK; SANN; FALSK; FALSK; SANT; SANN; FALSK; SANT)

Det är förvirrande, men TRUE representerar ett fel (text hittades inte) och FALSE representerar en matchning. Detta matrisresultat matas in i IF-funktionen som det logiska testet. För värde om SANT använder vi noll och för värde om sant, levererar vi den här koden, som genererar relativa radnummer för det intervall vi arbetar med:

ROW(files)-ROW(INDEX(files,1,1))+1)

IF-funktionen returnerar sedan en uppsättning värden så här:

(1; 0; 3; 4; 0; 0; 7; 0)

Alla siffror utom noll representerar matchningar för "filnamn1" - dvs. radnumret i de namngivna intervallfilerna där "filnamn1" visas.

Slutligen använder vi MAX-funktionen för att få det maximala värdet i denna matris, vilket är 7 i detta exempel.

Använd INDEX med det här radnumret för att hämta information relaterad till den senaste versionen (dvs. fullständigt filnamn, datum, användare osv.).

Utan namngivet intervall

Namngivna intervall gör det snabbt och enkelt att skapa en mer komplex formel, eftersom du inte behöver ange celladresser för hand. I det här fallet använder vi dock en extra funktion (INDEX) för att få den första cellen i de namngivna intervallfilerna, vilket komplicerar saker och ting lite. Utan det angivna intervallet ser formeln ut så här:

(=MAX(IF(ISERROR(SEARCH(H5&"*",C4:C11)),0,ROW(C4:C11)-ROW(C4)+1)))

Intressanta artiklar...