В Excel функция SEARCH
будет соответствовать пустой ячейке поиска со всеми ячейками поиска. В Calc пустая ячейка в качестве критерия поиска вернет ошибку.
Для того, чтобы выполнить операцию «вернуть все, если поисковая ячейка пуста», вам нужно будет обернуть поиск в IF
, возвращая число (поэтому функция ISNUMBER
возвращает TRUE) в случае, если ячейки поиска пустые :
IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)
Таким образом, ваша полная формула будет введена с Ctrl
+ Shift
+ Enter
(так как это формула массива) в ячейке F8, как:
=IFERROR(INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;"");ROW(A1)));"")
скопировать nd падайте, но сколько ячеек вам нужно. Если вы хотите вставить в большое количество ячеек, вы можете выделить их все, введя в поле имени (слева от строки формулы) диапазон, например F9:F1405
, и нажав Enter
.
Обратите внимание, что в LibreOffice версии старше 4.4.4.6 функция IFERROR
не будет подавлять ошибку (см bug 95226). Он должен работать так, как вы ожидаете, в более новых версиях.
Редактировать
Оба IFERROR
и ISERROR
функции передать эту конкретную ошибку через вместо возвращения TRUE, или FALSE (по-видимому, ошибка в текущей версии как OpenOffice и LibreOffice - смотрите раздел «Вопросы» в OpenOffice wiki page https://wiki.openoffice.org/wiki/Documentation/How_Tos/Calc:_ISERROR_function#Issues).
Потенциальное обходное решение - не передавать никакое текстовое значение функции SMALL
. (Формула выше передаст пустую текстовую строку функции SMALL
, если совпадение не найдено, что приведет к возникновению ошибки). Вместо ""
мы передадим последнее число строк в массиве - для этого, чтобы работать с нижней ячейкой в диапазоне, в этом случае строка 1398 должна быть пространством (или она может быть пустой, если было бы нормально Инструменты → Опции → OpenOffice Calc → View → Uncheck «Отобразить нулевые значения».
Мы также не будем указывать функции SMALL
для поиска ранга, который больше размера диапазона, который он предоставлен. как это:
=INDEX($B$3:$B$1400;SMALL(IF(ISNUMBER(IF($F$3<>"";SEARCH($F$3;$B$3:$B$1400);1) * IF($G$3<>"";SEARCH($G$3;$D$3:$D$1400);1)); ROW($D$3:$D$1400) - MIN(ROW($D$3:$D$1400))+1;1398);MIN(ROW(A1),1398)))
Я просто еще один вопрос, так как те клетки, которые не имеют каких-либо найденные значения возврата * # VALUE * Я хотел бы знать, что изменилось необходимо применять только оставить пустое место! В противном случае функция и объяснение были Великолепно, спасибо большое! – McBooley
@McBooley Я протестировал в версии 4.4.4.3 и увидел, что необоснованные ячейки вернули * # Value! * Вместо пустого; Я подумал из примечания в ошибке, с которой я связан, что это будет исправлено в более новых версиях. Но похоже, что у вас есть более новая версия и по-прежнему видя * * Value! * Неправильно нажатой через функцию 'IFERROR'? – Lyrl
У меня есть LibreOffice5, и да, я получаю * # Value! * From ** IFERROR **, если нет возвращенных данных, в противном случае он отлично работает, конечно – McBooley