Двойной минус в формулах excel

 

Добрый день! помогите, пожалуйста, разобраться.
Есть формула массива: =(C3/ГПР(ИНДЕКС(E3:M3;1;ПОИСКПОЗ(1;—(E3:M3<>0);0));E3:M3;1;0))
Теоретически, что она делает, мне понятно. Но вот как это происходит — не очень. Что за два минуса? когда они ставятся и какую функцию выполняют?
Мне нужно, чтобы эта формула брала не весь диапазон (E3:M3), а только ячейки с прогнозом продаж. Для примера вложила файл (столбец D)
Заранее спасибо за помощь!

Прикрепленные файлы

  • Книга1.xlsx (20.29 КБ)

 

Максим В.

Пользователь

Сообщений: 6759
Регистрация: 15.02.2016

#2

17.11.2020 12:14:45

Цитата
Лариса Кошелева написал:
Что за два минуса? когда они ставятся и какую функцию выполняют?

Преобразовывают логические ИСТИНА или ЛОЖЬ в 1 или 0 соответственно.

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

 

Jack Famous

Пользователь

Сообщений: 10848
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#4

17.11.2020 13:05:46

Цитата
Максим В.: Преобразовывают логические ИСТИНА или ЛОЖЬ в 1 или 0 соответственно

для примера да, но лучше обобщить формулировку до «пытается преобразовать в число, совершив простейшую математическую операцию двойного отрицания»

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Лариса Кошелева

Пользователь

Сообщений: 3
Регистрация: 17.11.2020

#5

17.11.2020 13:17:17

vikttur, Спасибо! Я смотрела, но честно — ничего не поняла….

Цитата
Максим В. написал:
Если в мире всё бессмысленно

Вот это то, что я поняла в описании.

Спасибо огромное за ответы!
Видно, когда человек писал эту формулу, он сам «учился», Файл достаточно давний был….)))
И я не умею особо поиском пользоваться. это молодежь с компьютером родилась… Так что спасибо за новые знания (по ссылке нашла пред.сообщения в этом же форуме)

Изменено: Лариса К17.11.2020 13:29:44

 

БМВ

Модератор

Сообщений: 21380
Регистрация: 28.12.2016

Excel 2013, 2016

ПОИСКПОЗ(1;—(E3:M3<>0);0) — заменить на ПОИСКПОЗ(1=1;E3:M3<>0;)  и короче, и вопросов меньше.
ИНДЕКС(E3:M3;1; — убрать 1; как класс, оно там лишнее, хоть и не мешает.

Изменено: БМВ17.11.2020 13:22:06

По вопросам из тем форума, личку не читаю.

 

давайте будем проще и честно признаем, что это демонстрация действия одного из основополагающих законов философии:
«отрицание отрицания»

вообще предполагаю вопрос о двух минусах для затравочки, обращаю ваше внимание в первом сообщении еще файл прицеплен и думаю, что  реальный вопрос именно там нужно из всего диапазона ограничится ячейками продаж, думаю автора темы больше волнует ответ на вопрос в файле, а не о двух минусах

Изменено: Ігор Гончаренко17.11.2020 13:25:00

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

PooHkrd

Пользователь

Сообщений: 6602
Регистрация: 22.02.2017

Excel x64 О365 / 2016 / Online / Power BI

Ігор Гончаренко, не, я понимаю когда додумываешь вопрос от ТС, на тему что же он хотел спросить. Но вот придумывать вопрос за ТС глядя в исходник, это что-то новое! Вот это опыт! Браво! Надо тоже так как-нибудь попробовать.

Вот горшок пустой, он предмет простой…

 

Лариса К

Пользователь

Сообщений: 3
Регистрация: 17.11.2020

#9

17.11.2020 13:36:21

Цитата
Ігор Гончаренко написал:
вообще предполагаю вопрос о двух минусах для затравочки

И да, и нет. Я формулу прописала там — просто через обычные если….

 

Ігор Гончаренко

Пользователь

Сообщений: 13746
Регистрация: 01.01.1970

#10

17.11.2020 13:38:35

я не открывал файл((( вопрос прочитал в сообщении #1

Цитата
Лариса Кошелева написал:
Мне нужно, чтобы эта формула брала не весь диапазон (E3:M3), а только ячейки с прогнозом продаж.

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

If you start studying advanced EXCEL, you must have noticed that many formulas, even the most basic formulas, when used with other formulas use this “–” symbol, and what we observe after applying these formulas, is that instead of getting TRUE value, we get output as 1, whereas if we are expecting FALSE value, we are getting output as 0.

So, you must have noticed that the “–” operator(Double negation operator)behaves like a binary operator in this. Yes, this operator can contrast the whole result in form of numbers.

First, we will see some examples which use this concept.

1.Using LEN Function:

Here, we will be having data of  4 students, and whoever speaks more than 10 characters, we will target him/her for harassment, by counting that student. The dataset will look like this:

Now, applying a simple formula of function LEN, we will get our desired result. The formula will be:

=LEN(B2:B5) > 10

Now, as discussed, we will see what this function will do without any external changes in its syntax. It is going to generate a boolean “logical” value array of the given ranges, and as per the given condition. So, let’s see what that array will look like:

={TRUE;FALSE;FALSE;FALSE}

Now, as clear from the above-returned array, that only the first student is harassing according to the given condition.

Now, let’s suppose this array has to be sent to superiors for checking students data, and they don’t really accept boolean logical values as they will compute these array values in terms of numbers. So, that is a problem!!. So this is where “–” comes into play. Now, applying the same formula on the same dataset, with a little adjustment, the formula will look like this:

=--(LEN(B2:B5)>10)

Now, the modified array will look like:

={1;0;0;0}

Now, this array can be used to compute mathematical forms in a direct fashion.

2.Using SUMPRODUCT

Now, let’s suppose we have a database of people watching a particular movie and an excel file associated with it. We have an approximate guess that movie number 1 is very popular so most people will watch that movie only. So we want to know how many people watch movie number 1. The dataset will be:

Now applying a simple formula to know the amount of 1’s in the MOVIES column. The formula will look like–

=($B2:$B6=1)

But as we know we can’t really deal with boolean logical values in the computational part, so this formula is insufficient. Here we will use the “–” operator to resolve this. Now, applying this operator in the previous formula, the formula will look like–

=--($B2:$B6=1)

Now, the array will look like:

{1;1;0;0;0}

Now we will directly apply the SUMPRODUCT function on this, to sum up, the truth values in the array. So the formula will be:

=SUMPRODUCT(--($B2:$B6=1))

So we will get output as 2 in this dataset for this condition.

So you see the importance of double negation operator in some cases. But in practical life, this operator is very powerful, as it can help you to compute in numeric form.

(вдогонку)
Для гарантированного преобразования значения выражения, обычно текстового (всей формулы или фрагмента) в число, когда это требуется.

Формула

даст в ячейке текстовое значение 123, выровненное по левому краю.

Формула

Код

=—ЛЕВСИМВ(«123456»;3)

отобразит уже число — с выравниванием вправо.

Можно использовать и другие приемчики, приводящие к такому преобразованию (кому что нравится):

Код

=1*ЛЕВСИМВ(«123456»;3)

Код

=0+ЛЕВСИМВ(«123456»;3)

Код

=СУММ(ЛЕВСИМВ(«123456»;3))

Наконец, просто функцию ЗНАЧЕН, которая, собственно, для этих целей и предназначена:

Код

=ЗНАЧЕН(ЛЕВСИМВ(«123456»;3))

Но кому же хочется пыхтеть и набирать такое длинное «ЗНАЧЕН» и лишнюю пару скобок, когда можно просто дважды клацнуть «минус» :)

Знак минус меняет положительный на отрицательный в стандартных формулах Excel.

Использование двух знаков минус -- изменяет ИСТИНА и ЛОЖЬ на числа:

=(1>2) =FALSE
=--(1>2) =0
=(2>1) =TRUE
=--(2>1) =1

Что еще более важно, это здорово использовать в формулах массива —

Возьмите этот стол, начиная с ячейки A1

Primary Secondary   Count
red     blue        10
blue    red         20
yellow  red         30
red     blue        40
purple  green       50
blue    red         60
red     red         70

Если вы хотите узнать, сколько у вас есть определенной комбинации, вы можете использовать такой продукт как этот —

=SUMPRODUCT(--(A2:A8="blue"),--(B2:B8="red"),C2:C8)

Это даст вам 80, выполнив это с вашим столом (буквально умножая) —

blue    red    Count    Total
0   x   0   x   10   =   0
1   x   1   x   20   =   20
0   x   1   x   30   =   0
0   x   0   x   40   =   0
0   x   0   x   50   =   0
1   x   1   x   60   =   60
0   x   1   x   70   =   0

По сути, это позволяет вам использовать условия true/false в качестве множителей в массиве.
Тогда как эта формула

=SUMPRODUCT((A2:A8="blue"),(B2:B8="red"),C2:C8)

вернет 0. Это было бы полезно в то время, когда показатели не будут работать с суммированием.

Если вы ищете информацию в Google, термин, который вы должны искать, это двойная черта.

Using two minus signs next to each other causes the formula to convert a return value of “TRUE” into 1 and a return value of “FALSE” into 0.

Let’s start with a simple logical condition :3 > 2 .

Apply this in excel = 3>2 returns “TRUE” . Using “—“ two minus signs together with this condition returns 1 = —(3>2)
This method is mostly used in SUMPRODUCT formulas to convert the conditional arrays that evaluates to TRUE/FALSE into 1/0.

Note : SUMPRODUCT formula ignores non numeric cells. Using double minus signs technique we can command excel to convert TRUE/FALSE to 1/0.

Following the values in cell A1:B8

A B
1

X

Y
2

20

2
3

10

5
4

5

8
5

15

11
6

7

14
7

8

17
8

13

20

Use this formula =SUMPRODUCT(—(A2:A8<12),B2:B8)

The first minus sign coerces the array to (0,-1,-1,0,-1,-1,0) and the second minus sign multiplies each values with negative sign [ Basic Maths : (-) * (-) = + ] (0,1,1,0,1,1,0)

So the sumproduct evaluates =SUMPRODUCT((0,1,1,0,1,1,0),(2,5,8,11,14,17,20)) returns a value 44.

You can figure out the same thing using the below formula :
=SUMPRODUCT((A2:A8<12*B2:B8)

About Author:

Deepanshu founded ListenData with a simple objective — Make analytics easy to understand and follow. He has over 10 years of experience in data science. During his tenure, he has worked with global clients in various domains like Banking, Insurance, Private Equity, Telecom and Human Resource.

Next →
← Prev

Like this post? Please share to your friends:
  • Двойной клик на окне excel
  • Двоичный лист excel для чего
  • Двойной интеграл в excel
  • Двоичный код в word
  • Двойной индекс в word