Добрый день! помогите, пожалуйста, разобраться. Прикрепленные файлы
|
|
Максим В. Пользователь Сообщений: 6759 |
#2 17.11.2020 12:14:45
Преобразовывают логические ИСТИНА или ЛОЖЬ в 1 или 0 соответственно. Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл |
||
vikttur Пользователь Сообщений: 47199 |
|
Jack Famous Пользователь Сообщений: 10848 OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome |
#4 17.11.2020 13:05:46
для примера да, но лучше обобщить формулировку до «пытается преобразовать в число, совершив простейшую математическую операцию двойного отрицания» Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄ |
||
Лариса Кошелева Пользователь Сообщений: 3 |
#5 17.11.2020 13:17:17 vikttur, Спасибо! Я смотрела, но честно — ничего не поняла….
Вот это то, что я поняла в описании. Спасибо огромное за ответы! Изменено: Лариса К — 17.11.2020 13:29:44 |
||
БМВ Модератор Сообщений: 21380 Excel 2013, 2016 |
ПОИСКПОЗ(1;—(E3:M3<>0);0) — заменить на ПОИСКПОЗ(1=1;E3:M3<>0;) и короче, и вопросов меньше. Изменено: БМВ — 17.11.2020 13:22:06 По вопросам из тем форума, личку не читаю. |
давайте будем проще и честно признаем, что это демонстрация действия одного из основополагающих законов философии: Изменено: Ігор Гончаренко — 17.11.2020 13:25:00 Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
|
PooHkrd Пользователь Сообщений: 6602 Excel x64 О365 / 2016 / Online / Power BI |
Ігор Гончаренко, не, я понимаю когда додумываешь вопрос от ТС, на тему что же он хотел спросить. Но вот придумывать вопрос за ТС глядя в исходник, это что-то новое! Вот это опыт! Браво! Надо тоже так как-нибудь попробовать. Вот горшок пустой, он предмет простой… |
Лариса К Пользователь Сообщений: 3 |
#9 17.11.2020 13:36:21
И да, и нет. Я формулу прописала там — просто через обычные если…. |
||
Ігор Гончаренко Пользователь Сообщений: 13746 |
#10 17.11.2020 13:38:35 я не открывал файл((( вопрос прочитал в сообщении #1
Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете! |
||
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