
Formula generică
=LOOKUP(2,1/(A:A""),A:A)
rezumat
Pentru a găsi valoarea ultimei celule ne-goale dintr-un rând sau coloană, puteți utiliza funcția CĂUTARE în această formulă surprinzător de compactă. Ca bonus suplimentar, această formulă nu este o formulă matrice și nu este volatilă.
Explicaţie
Cheia pentru a înțelege această formulă este să recunoaștem că valoarea de căutare a lui 2 este în mod deliberat mai mare decât orice valori care vor apărea în căutare_vector.
- Expresia A: A "" returnează o serie de valori adevărate și false: (TRUE, FALSE, TRUE, …).
- Numărul 1 este apoi împărțit la această matrice și creează o matrice nouă compusă fie din 1, fie împarte la zero erori (# DIV / 0!): (1,0,1, …). Această matrice este vectorul de căutare.
- Când lookup_value nu poate fi găsit, LOOKUP se va potrivi cu cea mai mică valoare următoare.
- În acest caz, lookup_value este 2, dar cea mai mare valoare din lookup_array este 1, astfel că căutarea se va potrivi cu ultima 1 din matrice.
- LOOKUP returnează valoarea corespunzătoare în result_vector (adică valoarea în aceeași poziție).
Gestionarea erorilor
Dacă există erori în lookup_vector, mai ales dacă există o eroare în ultima celulă ne-goală, această formulă trebuie ajustată. Această ajustare este necesară deoarece "" criteriile vor returna o eroare în sine dacă o celulă conține o eroare. Pentru a rezolva această problemă, utilizați ISBLANK cu NOT:
=LOOKUP(2,1/(NOT(ISBLANK(A:A))),A:A)
Ultima valoare numerică
Pentru a obține ultima valoare numerică, puteți adăuga funcția ISNUMBER astfel:
=LOOKUP(2,1/(ISNUMBER(A1:A100)),A1:A100)
Poziția ultimei valori
Dacă doriți să obțineți poziția (în acest caz numărul rândului) ultimei valori, puteți încerca o formulă de genul acesta:
=LOOKUP(2,1/(A:A""),ROW(A:A))
Aici alimentăm numerele rândurilor din același interval în căutarea vectorului rezultat și obținem înapoi numărul rândului din ultima potrivire.