Avatar billede Kris Praktikant
10. november 2017 - 13:32 Der er 1 kommentar og
1 løsning

=sumprodukt(Maks((Række(A:A))*(A:A<>"")))

Formlen i overskriften returnerer rækkenummeret på den sidste ikke tomme celle i kolonne A.

Hvorfor virker det. Specielt hvad returnerer funktionen Maks?
På forhånd tak
Kris
Avatar billede anedi Ekspert
10. november 2017 - 14:07 #1
Funktionen finder det maksimale rækkenummer (MAKS(RÆKKE(A:A)), der samtidig ikke har en tom værdi (A:A<>"").

Giver det mening

Vh
Anedi
Avatar billede xl-Enthusiast Ekspert
10. november 2017 - 15:05 #2
Jeg forudsætter, at du har følgende i A1:A20
1
q

f

g


h

y
7

7

m


Prøv et øjeblik at ændre formlen til:

=SUMPRODUKT(MAKS(RÆKKE(A1:A20)*(A1:A20<>"")))

så er den nemmere at analysere. Prøv nu at vælge den celle, hvor du har formlen stående, markér med musen i formelfeltet præcist følgende del af formlen: RÆKKE(A1:A20) og tryk på F9. Du vil se:
{1\2\3\4\5\6\7\8\9\10\11\12\13\14\15\16\17\18\19\20}. Prøv herefter på samme måde at markere (A1:A20<>"") og tryk på F9. Du vil se:
{SAND\SAND\FALSK\SAND\FALSK\SAND\FALSK\FALSK\SAND\FALSK\SAND\SAND\FALSK\SAND\FALSK\SAND\FALSK\FALSK\FALSK\FALSK}
Prøv herefter at markere præcist følgende: RÆKKE(A1:A20)*(A1:A20<>"") og tryk på F9. Du vil nu se:
{1\2\0\4\0\6\0\0\9\0\11\12\0\14\0\16\0\0\0\0}
Den første matrice viser numrene på række 1 til række 20, altså tallene 1 til 20. Den næste matrice undersøger om A1, A2, A3 osv. op til A20 er forskellig fra blank. Det er en logisk test der returnerer SAND, eller FALSK. SAND hvis cellen er forskellig fra blank. I modsat fald returneres FALSK. Den tredje matrice fremkommer ved at vi ganger de to første sammen, det vil sige at første element i den første matrice ganges med første element i den anden matrice, andet element i den første matrice ganges med andet element i den anden matrice og så videre, det vil sige 1*SAND = 1; 2*SAND = 2; 3*FALSK = 0 og så videre. Det giver alt i alt matricen:
{1\2\0\4\0\6\0\0\9\0\11\12\0\14\0\16\0\0\0\0}
Nu er formlen reduceret til:
SUMPRODUKT(MAKS({1\2\0\4\0\6\0\0\9\0\11\12\0\14\0\16\0\0\0\0}))
MAKS funktionen finder den største værdi i denne matrice, det vil sige 16.
SUMPRODUKT bruges for at undgå at skulle indtaste som en matrixformel. Hvis du er villig til at indtaste som matrixformel (afslutte formlen ved at holde Ctrl og Shift nede før tryk på Enter) kan du nøjes med 
=MAKS(RÆKKE(A1:A20)*(A1:A20<>""))
Bortset fra, at det ikke er til at analysere formlen på denne måde, hvis du bruger "full column references" (A:A), så er der andre gode grunde til at undlade denne måske smarte men uhensigtsmæssige referencemåde. Ved brug af matrix- og matrixlignende formler som SUMPRODUKT undersøger Excel hele kolonnen, selvom der måske kun er data i de første 20, og det er beregningsmæssigt meget ineffektivt og det er sådan noget der kan bidrage til at lægge Excel død.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester