Зміст

# Обробка порожніх комірок

У попередніх версіях програми в порожніх клітинках у деяких контекстах примусово встановлювалося число 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) | TRUE
=ISTEXT(VLOOKUP(1;A1:C1;2)) | FALSE (B1, раніше було TRUE)
=ISTEXT(VLOOKUP(1;A1:C1;3)) | FALSE (C1)
=ISBLANK(B1) | TRUE
=ISBLANK(C1) | TRUE
=ISBLANK(VLOOKUP(1;A1:C1;2)) | TRUE (B1, раніше було FALSE)
=ISBLANK(VLOOKUP(1;A1:C1;3)) | FALSE (C1)

Слід зазначити, що поведінка Microsoft Excel відрізняється: в якості результату посилання на порожню комірку або комірку з формулою, що містить результат порожньої клітинки, завжди повертається число. Приклад:

Варіант | Формула | Результат і пояснення
--- | --- | ---
A1: <Порожньо> | B1: =A1 | Виводить 0, але є лише посиланням на порожню комірку.
=ISNUMBER(A1) | FALSE
=ISTEXT(A1) | FALSE
=A1=0 | TRUE
=A1="" | TRUE
=ISNUMBER(B1) | FALSE (Microsoft Excel: TRUE)
=ISTEXT(B1) | FALSE
=B1=0 | TRUE
=B1="" | TRUE (Microsoft Excel: FALSE)
C1: =VLOOKUP(...) з порожньою коміркою в результаті | показує порожню (Microsoft Excel: показує 0)
=ISNUMBER(VLOOKUP(...)) | FALSE
=ISTEXT(VLOOKUP(...)) | FALSE
=ISNUMBER(C1) | FALSE (Microsoft Excel: TRUE)
=ISTEXT(C1) | FALSE