Siste verdi enn null på rad

August 10  by Eliza

Brian har en rad med tall med 240 celler. I denne raden, tallene er jevnt fallende og vil til slutt, på et tidspunkt i de 240 cellene, blir 0. nuller vil fortsette å fylle de resterende cellene i raden. Brian må skrive en ligning som vil returnere den siste ikke-null verdi i raden.

Det finnes en rekke måter som den ønskede verdi kan returneres. (Betyr ikke det alltid synes å være tilfelle med Excel? Du kan komme opp med mange måter å få et resultat.) Vanligvis kan du bruke en vanlig formel eller en matriseformel.

Hvis du ønsker å bruke en vanlig formel, her er en du kan prøve:

= FORSKYVNING (A6,0, (ANTALL (A6: IF6) -COUNTIF (A6: IF6,0)) - 1)

Den ANTALL.HVIS-funksjonen teller antall nullverdier og ANTALL-funksjonen bestemmer antall celler i området. Trekke fra hverandre og justering av 1 gir OFFSET verdi inn i "array" av cellene der de siste ikke-null verdi ligger. Denne formelen forutsetter at verdiene begynner i kolonne A; hvis de begynner i en annen kolonne da må du justere verdien gitt av COUNT / ANTALL.HVIS del av formelen for å representere forskjøvet fra den første kolonnen.

Her er en kortere variant av formelen, basert på å gjøre en forskyvning fra høyre side av området i stedet for til venstre:

= FORSKYVNING (IF6,0, -COUNTIF (A6: IF6,0))

I dette tilfellet er det viktig at IF6 være den faktiske høyre enden av området. Formelen virker ved å telle antall null-verdier i området (alle på høyre side av området), og deretter å beregne celle adressen til den siste celle (IF6) minus antall nuller.

Her er en versjon som bruker INDEX funksjon, i stedet:

= INDEKS (A6: IF6,, MATCH (0, A6: IF6,0 -1))

Denne versjonen er enda kortere, ved hjelp av oppslag funksjon:

= LOOKUP (1,1 / (6: 6> 0), 6: 6)

Matriseformler kan også brukes. (Array formler legges inn ved å trykke Ctrl + Shift + Enter.) Denne bruker INDIREKTE-funksjonen:

= INDIREKTE ("R6C" & MAX ((A6: IF6> 0) * KOLONNE (A6: IF6)), FALSE)

Dette matriseformel bruker en interessant implementering av oppslag funksjon for å finne riktig resultat:

= LOOKUP (9.99999999999999E + 307, IF (A6: IF6 <> 0, A6: IF6))

Her er en annen matriseformel som kan brukes, denne gangen ved hjelp av forskyvningsfunksjonen for å finne den siste ikke-null verdi i rad 6:

= FORSKYVNING (A6,0, MIN (IF (6: 6 = 0, KOLONNE (6: 6), 300)) - 2)

Her er en enda kortere variant:

= MIN (IF (A6: IF6> 0, A6: IF6))

Alle disse formlene som er presentert til nå avhenge av det faktum at tallene i raden faktisk gjør synke-de går fra uansett begynnelsen tall er, og stadig går mot null. Hvis tallene ikke avta, så kan du bruke en annen type matriseformel for å bestemme den siste ikke-null verdi i raden:

= INDEKS (6: 6, MAX (IF (A6: IF6 <> 0, KOLONNE (A6: IF6))))

Formelen først bestemmer den maksimale kolonne i rekken (i dette tilfelle rad 6) som har en verdi som ikke er lik null, da den benytter INDEX-funksjonen for å få verdien av den kolonne i den raden.

Som du kan fortelle, det er ganske mange måter å finne den siste ikke-null verdi på rad. Velg den som streiker din fancy; det er ingen rett eller galt i dette tilfellet.

ExcelTips er din kilde for kostnadseffektiv Microsoft Excel trening. Dette tipset (3785) gjelder for Microsoft Excel 97, 2000, 2002, og 2003. Du kan finne en versjon av dette tipset for Båndet av Excel (Excel 2007 og senere) her: Siste annen verdi enn null på rad.