2015-11-03 1 views
3

Что означают два знака - в начале формулы?Значение двух минусовых знаков вместе («double unary»)

Ex: Эта формула получает строку даты и преобразует его в дату Excel серийный номер:

=--(MID(S2,4,3)&LEFT(S2,3)&MID(S2,7,4)) 

формула прекрасно работает, я просто хочу понять -- в формуле.

+3

Это двойной отрицательный. Это заставляет Excel делать математику по результатам остальной формулы. Это можно использовать для преобразования логических результатов (истинных или ложных) в число (1 или 0) или, возможно, в случае этой формулы, чтобы заставить результаты всех этих манипуляций строк быть числом. Вы также можете использовать что-то вроде '= 0 + (MID (S2,4,3) & LEFT (S2,3) & MID (S2,7,4)), но' --' для этого довольно стандартно. – JNevill

ответ

2

@ Комментарий JNevill's является хорошим ответом на меня, но ради ответа рассмотрите Y в A1 и Y в B1. Эта формула:

=(A1=B1) 

возвращает TRUE. Как уже упоминалось, прикрепите оператора вперед (с 0+, или 1*), и булевское значение превращается в 1, или 0, если B1 (только) изменено, скажем, на X.

Единственный минус отрицает это. 0-, или -1*, спереди возвращается -1 для обоих А1 и В1, равных Y. Negate , что и -1 результат будет 1, скажем =--1*(A1=B1).

Но затем умножением на единицу (или добавление к нулю) не имеет смысла, мог бы также просто пойти:

=--(A1=B1) 

Обратите внимание, что из-за порядка, в котором оценки имеют место, выше не то же самое как:

=--A1=B1 

, который не имеет никакого значения, так возвращает #VALUE!.

Текстовые функции (MID и LEFT в вашем примере) возвращают строки, поэтому построение индекса даты на сегодняшний день, например, (42311 в системе 1900 даты) с такими функциями (только) возвращают пять символов Excel не распознают, как, возможно, представляющими свидание. Преобразованный в числовой формат и представленный как дата, это должно выглядеть как «сегодня».

Таким образом, формат как ячейка как текст и введите 42311, затем переформатируйте как дату и результат по-прежнему 42311. Форматирование ячейки в качестве общего и введите:

=--("42"&"311") 

до этого форматирования, как дата и вы должны увидеть что-то, что выглядит как «сегодня».

+1

Вы также можете использовать функцию 'N', чтобы выполнить одно и то же. '= N (" a "=" a ")' должно приводить к '1' и т. Д. –

+0

@David True! - но не выше, чем достаточно долго :) – pnuts

+1

Ха-ха, да, ваш ответ достаточно адекватен, просто хотел предоставить другой альтернативный способ сделать это. Я чувствую, что функция 'N' не известна :) –

Смежные вопросы