Пытаясь расшифровать некоторые формулы Excel, я вижу такие вещи, как SUMPRODUCT (--Left (...)...)
Что делает? Естественно, мне кажется, что это унизительно, но я не смог найти никакой документации по этому вопросу.
Пытаясь расшифровать некоторые формулы Excel, я вижу такие вещи, как SUMPRODUCT (--Left (...)...)
Что делает? Естественно, мне кажется, что это унизительно, но я не смог найти никакой документации по этому вопросу.
Двойной тире известен как двойной унарный оператор.
Попробуйте эту ссылку: Зачем использовать - в формулах SUMPRODUCT
В частности:
SUMPRODUCT() игнорирует нечисловые записи. Сравнение возвращает логическое значение (TRUE/FALSE), которое не является числовым. XL автоматически принудительно вводит логические значения в числовые значения (соответственно 1/0) в арифметических операциях (например, TRUE + 0 = 1).
Самый эффективный способ принуждения значения - это сначала применить унарный минус-оператор, принуждая TRUE/FALSE к -1/0, а затем снова применяя его для отрицания значения, например, +1/0.
Один унарный оператор (-) заставляет true/false значения в -1/0. Используя двойной унарный оператор, мы снова вызываем значения 1/0.
Унарный оператор (-) является сокращенным методом преобразования выражения true/false в -1/0.
Один оператор преобразует - (true) в -1, поэтому двойной унарный оператор используется для преобразования этого значения в 1:
-(-(true)) = -(-(1)) = 1
-(-(false)) = -(-(0)) = 0
Я использовал SUMPRODUCT некоторое время и всегда использовал символ *
вместо --
. Я уверен, что я задал тот же вопрос, который вы задали, но я не могу вспомнить причину, по которой они мне дали, но мне сказали, что нет необходимости в --
, поскольку sumproduct справляется с этим довольно хорошо без он.
Во всяком случае, =sumproduct(()*()*()*())
всегда работал у меня, и он был менее запутанным.
Логические значения TRUE и FALSE в excel рассматриваются как 1 и 0, но нам нужно их преобразовать. Чтобы преобразовать их в числа 1 или 0, выполните некоторую математическую операцию. Унарный оператор отрицает логическую (математическую операцию), следовательно, преобразует логическое значение в число. То же работает в TRUE * FALSE = 0