Что делает в формулах Excel? - PullRequest
21 голосов
/ 20 июля 2010

Попытка расшифровать некоторые формулы Excel, и я вижу такие вещи, как SUMPRODUCT (- Left (...) ...)

Что делает? Естественно, мне это кажется унизительным, но я не смог найти никакой документации по нему.

Ответы [ 4 ]

26 голосов
/ 20 июля 2010

Двойная черта известна как двойной унарный оператор.

Попробуйте эту ссылку: Зачем использовать - в формулах SUMPRODUCT

В частности:

SUMPRODUCT () игнорирует нечисловые записи.Сравнение возвращает логическое (TRUE / FALSE) значение, которое не является числовым.XL автоматически приводит логические значения к числовым значениям (1/0, соответственно) в арифметических операциях (например, TRUE + 0 = 1).

Самый эффективный способ приведения значения - сначала применить унарный оператор минусприведение значения ИСТИНА / ЛОЖЬ к -1/0, затем применение его снова для отмены значения, например, + 1 / 0.

Один унарный оператор (-) приводит true / false значения в -1 / 0 .Используя двойной унарный оператор, мы снова приводим значения к 1/0 .

5 голосов
/ 20 июля 2010

Унарный оператор (-) - это сокращенный метод для преобразования выражения true / false в -1 / 0.

Один оператор преобразует - (true) в -1, поэтому двойной унарный оператор используется для преобразования этого значения обратно в 1:

-(-(true)) = -(-(1)) = 1
-(-(false)) = -(-(0)) = 0
0 голосов
/ 18 июля 2016

Булевы значения TRUE и FALSE в excel обрабатываются как 1 и 0, но нам нужно их преобразовать. Чтобы преобразовать их в числа 1 или 0, выполните некоторую математическую операцию. Унарный оператор отрицает логическое значение (математическая операция), следовательно, конвертирует логическое значение в число. То же самое работает в TRUE * FALSE = 0

0 голосов
/ 21 июля 2010

Некоторое время я использовал SUMPRODUCT и всегда использовал символ * вместо --. Я уверен, что задал тот же вопрос, что и вы, но я не могу вспомнить причину, которую они мне дали, но мне сказали, что на самом деле не было необходимости в --, так как sumproduct довольно хорошо себя обходил без это.

В любом случае, =sumproduct(()*()*()*()) всегда работал для меня, и это менее запутанно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...