2010-07-20 27 views
10

Cercando di decifrare alcune formule di Excel e vedo alcune cose come SUMPRODUCT (- Sinistra (...) ...)Cosa - fa in Excel?

Che cosa si sta facendo? Naturalmente mi sembra un decremento ma non ho trovato alcuna documentazione su di esso.

Grazie.

risposta

14

Il doppio trattino è noto come operatore doppio unario.

Prova questo link: Why use -- in SUMPRODUCT formulae

In particolare:

MATR.SOMMA.PRODOTTO() ignora le voci non numerici. Un confronto restituisce un valore booleano (VERO/FALSO), che non è numerico. XL calcola automaticamente i valori booleani in valori numerici (1/0, rispettivamente) in operazioni aritmetiche (ad esempio, TRUE + 0 = 1).

Il modo più efficace per forzare il valore è prima di applicare l'operatore unario meno, forzare TRUE/FALSE a -1/0, quindi applicarlo di nuovo per annullare il valore, ad es. +1/0.

Un unico operatore unario (-) costringe vero/falso valori in -1/0. Usando il doppio operatore unario, costringiamo nuovamente i valori a 1/0.

4

L'operatore unario (-) è un metodo abbreviato per convertire un'istruzione true/false in -1/0.

Un singolo operatore convertirà - (vero) in -1, in modo da un operatore di doppio unario viene utilizzato per convertire quel nuovo in 1:

-(-(true)) = -(-(1)) = 1 
-(-(false)) = -(-(0)) = 0 
0

Sto usando MATR.SOMMA.PRODOTTO per un po 'e ho sempre utilizzato il simbolo * anziché --. Sono sicuro di aver fatto la stessa domanda che hai chiesto, ma non riesco a ricordare il motivo per cui mi hanno dato, ma mi è stato detto che non c'era davvero bisogno di -- come sumproduct gestito abbastanza bene senza di esso.

In ogni caso, =sumproduct(()*()*()*()) ha sempre funzionato per me, ed è meno confuso.

+0

- può forzare un singolo array alla volta. – Noumenon

0

I valori booleani TRUE e FALSE in Excel vengono considerati 1 e 0, ma è necessario convertirli. Per convertirli in numeri 1 o 0, eseguire alcune operazioni matematiche. L'operatore Unary annulla il valore booleano (operazione matematica), quindi converte il numero booleano in numero. Stessi lavori in TRUE * FALSE = 0