Den dobbelte negativ tvinger SAND eller FALSK værdier til deres numeriske ækvivalenter, 1 og 0. Dette er en nyttig teknik i mange avancerede formler, der arbejder med celleområder.
I mere avancerede Excel-formler kan du løbe ind i den dobbelte negative operation (–):
Hvad pokker er det, og hvad gør det?
Den dobbelte negativ (nogle gange kaldet den endnu mere nørdede “dobbelt unær”) tvinger SAND eller FALSK værdier til deres numeriske ækvivalenter, 1 og 0. Det bruges i formler, hvor der er brug for tal til en bestemt matematisk operation. Det lyder måske ret vagt, så jeg vil illustrere med eksemplet ovenfor. Lad os sige, at du har en liste over ord i et område, og du vil tælle, hvor mange ord der indeholder mere end 5 tegn.
Du kan bygge en simpel formel til at gøre dette med funktionen LÆNGDE og dette udtryk:
LÆNGDE(A2:A7)>5
For hver af de fem celler i området vil LÆNGDE returnere et tegnantal, som vil blive kontrolleret med >5. Resultatet vil være en matrix med 2 TRUE eller FALSE værdier som dette:
{FALSK;FALSK;FALSK;FALSK;SAND;SAND}
Bemærk, at der er 2 SAND værdier, en hver for hver tekstværdi med mere end 5 tegn: “Ypsilon” og “Epsilon”. De 4 FALSK værdier er for “Alfa”, ”Beta”, ”Gamma” og “Omega”. Hvis vi nu indsætter det udtryk i SUMPRODUKT for at tælle de SANDE resultater, hvad får vi så?
=SUMPRODUKT(LÆNGDE(A2:A7)>5)
Vi får nul. Hvorfor?
Fordi SAND og FALSK er logiske værdier, ikke tal.
=SUMPRODUKT({FALSK;FALSK;FALSK;FALSK;SAND;SAND}) // returnerer nul
Excel vil ikke behandle logiske værdier som tal uden lidt hjælp. Heldigvis skal der ikke så meget til. Enhver matematisk operation vil få Excel til at konvertere TRUE til 1 og FALSK til nul. Som det viser sig, er det dobbelte negativ en enkel og klar måde at gøre dette på. Den første negative vil konvertere SAND til -1, og den anden negative vil konvertere -1 til 1. I tilfælde af FALSK værdier vil den første negative resultere i nul, og den anden negative vil også resultere i nul.
For at bruge det dobbelte negativ i denne formel, pakker vi det oprindelige udtryk i parentes, sætter et dobbelt negativ foran.
=SUMPRODUKT(--(LÆNGDE(A2:A7)>5)) // tvinges med --
=SUMPRODUKT({0;0;0;0;1;1}) // returnerer 3
Jeg bruger i øvrigt funktionen SUMPRODUKT her i stedet for SUM, så vi ikke behøver at indtaste som en arrayformel, med Ctrl + Shift + Enter. Men SUM indtastet med Ctrl + Shift + Enter vil give samme resultat.
Fejlretning med F9
Når du arbejder med ting som dobbeltnegativer, skal du vide, hvordan du bruger F9 til at fejlsøge en formel. F9-tasten er som et røntgenbillede til at afsløre, hvad Excel egentlig laver “under motorhjelmen”. For eksempel, hvis jeg vælger det oprindelige udtryk i formlen og trykker på F9, ser jeg en række af SAND og FALSK værdier.
Hvis jeg vælger den reviderede formel, inklusive det dobbelte negativ, og trykker på F9:
Excel vil vise 1’er og 0’er.
Andre måder
En dobbelt negativ er ikke den eneste måde at få ettaller og nuller fra logik. Du kan også tilføje eller trække nul fra, gange med en eller bruge den uudgrundeligt navngivne N-funktion. Alle formlerne nedenfor vil returnere det samme resultat:
=SUMPRODUKT(--(LÆNGDE(område)>5))
=SUMPRODUKT((LÆNGDE(område)>5)+0)
=SUMPRODUKT((LÆNGDE(område)>5)*1)
=SUMPRODUKT(TAL(LÆNGDE(område)>5))
Hvilken mulighed skal du bruge?
Personligt bruger jeg den dobbelte negative mulighed oftest, fordi den er enkel og tydeligt angiver formålet. Men jeg kan også godt lide funktionen TAL.