Обработка пустых ячеек

From LibreOffice Help
Jump to: navigation, search

В предыдущих версиях программы в пустых ячейках в некоторых контекстах принудительно устанавливалось число 0, а в других - пустая строка, за исключением прямого сравнения, где обе формулы =A1=0 и =A1="" возвращали значение TRUE в том случае, если ячейка A1 была пустой. Теперь пустота ячейки наследуется до момента её использования, поэтому оба выражения =VLOOKUP(...)=0 и =VLOOKUP(...)="" возвращают значение TRUE, если в результате поиска возвращена пустая ячейка.

Простая ссылка на пустую ячейку также отображается как число 0, однако не обязательно имеет числовой тип; поэтому сравнения со ссылающейся ячейкой выполняются в соответствии с ожиданиями.

В следующих примерах в A1 содержится число, B1 пуста, а в C1 содержится ссылка на B1:

A1: 1 B1: <Пусто> C1: =B1 (выводится 0)

=B1=0 => TRUE

=B1="" => TRUE

=C1=0 => TRUE

=C1="" => TRUE (ранее FALSE)

=ISNUMBER(B1) => FALSE

=ISNUMBER(C1) => FALSE (ранее TRUE)

=ISNUMBER(VLOOKUP(1;A1:C1;2)) => FALSE (B1)

=ISNUMBER(VLOOKUP(1;A1:C1;3)) => FALSE (C1, ранее TRUE)

=ISTEXT(B1) => FALSE

=ISTEXT(C1) => FALSE

=ISTEXT(VLOOKUP(1;A1:C1;2)) => FALSE (B1, ранее TRUE)

=ISTEXT(VLOOKUP(1;A1:C1;3)) => FALSE (C1)

=ISBLANK(B1) => TRUE

=ISBLANK(C1) => FALSE

=ISBLANK(VLOOKUP(1;A1:C1;2)) => TRUE (B1, ранее FALSE)

=ISBLANK(VLOOKUP(1;A1:C1;3)) => FALSE (C1)

Note.png Следует отметить, что поведение Microsoft Excel отличается: в качестве результата ссылки на пустую ячейку или ячейку с формулой, содержащую результат пустой ячейки, всегда возвращается число. Пример:

A1: <Пусто>

B1: =A1 => выводит 0, но является всего лишь ссылкой на пустую ячейку

=ISNUMBER(A1) => FALSE

=ISTEXT(A1) => FALSE

=A1=0 => TRUE

=A1="" => TRUE

=ISNUMBER(B1) => FALSE (MS-Excel: TRUE)

=ISTEXT(B1) => FALSE

=B1=0 => TRUE

=B1="" => TRUE (MS-Excel: FALSE)

C1: =VLOOKUP(...) при пустой ячейке результат => на экран выводится пустая ячейка (MS Excel: выводится 0)

=ISNUMBER(VLOOKUP(...)) => FALSE

=ISTEXT(VLOOKUP(...)) => FALSE

=ISNUMBER(C1) => FALSE (MS-Excel: TRUE)

=ISTEXT(C1) => FALSE