Как упростить формулу Excel / Google Sheets с избыточными вызовами методов?

1374
Mac Sigler

У меня есть книга Excel (ну, технически Google Sheets), содержащая информацию о хранении на складе. Я выяснил, как составить запросы, чтобы он собирал необходимую информацию с одного листа с несколькими записями («поток сознания») и помещал ее на другой лист, где перечислялся только последний элемент для определенной позиции продукта.

Проблема, с которой я столкнулся, заключалась в том, что если не было найдено ни одного элемента с этим описанием, я бы получил запись # N / A вместо того, чтобы оставить ячейку пустой. Исследования побудили меня обернуть запрос в вызов isna (), чтобы я мог вручную очистить любые ячейки # N / A, но теперь запрос вызывается дважды для каждого элемента, заметно замедляя вычисления.

Пример:

A = отметка времени B = проход C = раздел D = ряд E = позиция F = количество G = описание

=if(isna(QUERY('Form Responses 1'!$A$2:$G$10011, "select A where (B = "&B2&" AND C = "&C2&" AND D = '"&D2&"' AND E = '"&E2&"') ORDER BY A DESC LIMIT 1")), " ", QUERY('Form Responses 1'!$A$2:$G$10011, "select A where (B = "&B2&" AND C = "&C2&" AND D = '"&D2&"' AND E = '"&E2&"') ORDER BY A DESC LIMIT 1")) 

Мои вопросы:

1) Есть ли более эффективный способ убрать # N / A клеток?

2) Если нет, могу ли я избежать вызова одного и того же запроса дважды (например, с помощью чего-то вроде временной переменной в формуле)?

Любые предложения "украсить" мои формулы приветствуются и приветствуются.

1
Посмотрите в `IFERROR ()`. Kyle 8 лет назад 0
Ваш файл является либо электронной таблицей Google, либо электронной таблицей Excel. «Технически» не входит в это. Это не одно и то же, и формулы отличаются. Отметьте свой вопрос соответственно. teylyn 8 лет назад 0
@Kyle Похоже, что в новых версиях Excel может быть доступна функция IFNA (), но пока это не станет широко распространенным стандартом, это выглядит как лучший вариант для поддержания чистоты моих формул. Спасибо! Mac Sigler 8 лет назад 0

1 ответ на вопрос

1
Mac Sigler

I used Kyle's suggestion of using IFERROR() to help clean up the formulae and keep them readable.

It seems like newer versions of Excel have an IFNA() function, but that's currently unavailable in Google Sheets. Hopefully it will be implemented in the future.

It also goes without saying that IFERROR() will swallow any errors thrown, so be careful if your data requires special error handling.