Excel-formule: laatste bestandsversie opzoeken -

Generieke formule

=LOOKUP(2,1/(ISNUMBER(FIND(filename,range))),range)

Samenvatting

Om de laatste bestandsversie in een lijst op te zoeken, kunt u een formule gebruiken die is gebaseerd op de LOOKUP-functie samen met de ISNUMBER- en FIND-functies. In het weergegeven voorbeeld is de formule in cel G7:

=LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files)

waarbij "bestanden" het benoemde bereik B5: B11 is.

Context

In dit voorbeeld hebben we een aantal bestandsversies vermeld in een tabel met een datum en gebruikersnaam. Merk op dat bestandsnamen worden herhaald met een teller aan het einde als een revisienummer - 001, 002, 003, enz.

Gegeven een bestandsnaam, willen we de naam van de laatste of laatste revisie opvragen. Er zijn twee uitdagingen:

  1. De uitdaging is dat de versiecodes aan het einde van de bestandsnamen het moeilijker maken om de bestandsnaam te matchen.
  2. Excel-overeenkomstformules retourneren standaard de eerste overeenkomst, niet de laatste overeenkomst.

Om deze uitdagingen het hoofd te bieden, moeten we een aantal lastige technieken gebruiken.

Uitleg

Deze formule gebruikt de functie ZOEKEN om de laatste overeenkomende bestandsnaam te zoeken en op te halen. De opzoekwaarde is 2, en de lookup_vector wordt hiermee gemaakt:

1/(ISNUMBER(FIND(G6,files)))

Binnen dit fragment zoekt de FIND-functie naar de waarde in G6 binnen het benoemde bereik "bestanden" (B5: B11). Het resultaat is een array als deze:

(1;#VALUE!;1;1;#VALUE!;#VALUE!;1)

Hier staat het getal 1 voor een overeenkomst en de fout #VALUE staat voor een niet-overeenkomende bestandsnaam. Deze array gaat naar de ISNUMBER-functie en komt er als volgt uit:

(TRUE;FALSE;TRUE;TRUE;FALSE;FALSE;TRUE)

Foutwaarden zijn nu FALSE en het getal 1 is nu WAAR. Dit overwint uitdaging # 1, we hebben nu een array die duidelijk laat zien welke bestanden in de lijst de gewenste bestandsnaam bevatten.

Vervolgens wordt de array als noemer gebruikt met 1 als teller. Het resultaat ziet er als volgt uit:

(1;#DIV/0!;1;1;#DIV/0!;#DIV/0!;1)

die naar LOOKUP gaat als de lookup_vector. Dit is een lastige oplossing om # 2 uit te dagen. De functie ZOEKEN werkt alleen in de modus bij benadering en negeert automatisch foutwaarden. Dit betekent dat met 2 als opzoekwaarde, VERT.ZOEKEN zal proberen om 2 te vinden, mislukt en teruggaat naar het vorige nummer (in dit geval komt het overeen met de laatste 1 op positie 7). Ten slotte gebruikt LOOKUP 7 als een index om het 7e bestand in de lijst met bestanden op te halen.

Omgaan met blanco zoekopdrachten

Vreemd genoeg retourneert de functie FIND 1 als de opzoekwaarde een lege tekenreeks ("") is. Om u te beschermen tegen een valse match, kunt u de formule in IF verpakken en testen op een lege zoekopdracht:

=IF(G6"",LOOKUP(2,1/(ISNUMBER(FIND(G6,files))),files),"")

Interessante artikelen...