Excel-formule: haal de eerste niet-lege waarde op in een lijst -

Inhoudsopgave

Generieke formule

(=INDEX(range,MATCH(FALSE,ISBLANK(range),0)))

Samenvatting

Om de eerste niet-lege waarde (tekst of getal) in een bereik in een kolom met één kolom te krijgen, kunt u een matrixformule gebruiken op basis van de functies INDEX, MATCH en ISBLANK. In het getoonde voorbeeld is de formule in D10:

(=INDEX(B3:B11,MATCH(FALSE,ISBLANK(B3:B11),0)))

Opmerking: dit is een matrixformule en moet worden ingevoerd met Control-Shift-Enter.

Uitleg

Dus de kern van het probleem is dit: we willen de eerste niet-lege cel krijgen, maar we hebben geen directe manier om dat in Excel te doen. We zouden VERT.ZOEKEN kunnen gebruiken met een jokerteken * (zie onderstaande link), maar dat werkt alleen voor tekst, niet voor cijfers.

We moeten dus de functionaliteit bouwen die we nodig hebben door formules te nesten. Een manier om dat te doen is om een ​​array-functie te gebruiken die cellen "test" en een array van TRUE / FALSE-waarden retourneert die we in de MATCH-functie kunnen invoeren.

De functie ISBLANK werkt van binnen naar buiten en evalueert de cellen in het bereik B3: B11 en retourneert een array die er als volgt uitziet:

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

Elke FALSE vertegenwoordigt een cel in het bereik die niet leeg is.

Vervolgens zoekt MATCH naar FALSE in de array en retourneert de positie van de eerste gevonden overeenkomst, in dit geval 2. Op dit punt ziet de formule in het voorbeeld er nu als volgt uit:

(=INDEX(B3:B11,2,0)))

Ten slotte neemt de INDEX-functie het over en krijgt de waarde op positie 2 in de array, wat 10 is.

Eerste lengtewaarde anders dan nul

Om de eerste lengtewaarde te krijgen die niet nul is, kunt u de LEN-functie als volgt opnemen:

(=INDEX(range,MATCH(TRUE,LEN(range)>0,0)))

Eerste numerieke waarde

Om de eerste numerieke waarde in een lijst te krijgen, kunt u de formule aanpassen om de ISNUMBER-functie te gebruiken, en vervolgens de logica wijzigen zodat deze overeenkomt met TRUE in plaats van FALSE:

(=INDEX(range,MATCH(TRUE,ISNUMBER(range),0)))

Dit is ook een matrixformule en moet worden ingevoerd met control + shift + enter.

Goede links

Zoek het eerste niet-lege item in een lijst (chandoo)

Interessante artikelen...