2016-01-06 2 views
1

Я работаю над проектом, в окнах Excel, но теперь я должен изменить его LibreOffice Calc и функция возвращает #VALUE!, но работает нормально в Excel.Неправильное значение типа данных

Вот функция (он ищет значения в определенном столбце и строке)

=IFERROR(INDEX($B$3:$B$1400; SMALL(IF(ISNUMBER((SEARCH($F$3;$B$3:$B$1400))* 
(SEARCH($G$3;$D$3:$D$1400))); ROW($D$3:$D$1400)-MIN(ROW($D$3:$D$1400))+1;"");ROW(A21)));"") 

А вот как мой рабочий лист ака таблицы в LibreOffice Calc выглядит

enter image description here

Я где-то читал, что котировки не должны быть там, поэтому я попытался удалить/заменить их и получил значение из одной ячейки:

Когда я REMOVED в Котировки «», он вернулся через Случайные клетки ценят

Когда я REPLACED в Котировки «» с номером он возвращается значение первый человек, но в следующей ячейке (поскольку он должен найти каждого человека с определенным именем или если он оставлен Пустой он должен найти каждый Лицо в файле.

ответ

1

В 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))) 
+1

Я просто еще один вопрос, так как те клетки, которые не имеют каких-либо найденные значения возврата * # VALUE * Я хотел бы знать, что изменилось необходимо применять только оставить пустое место! В противном случае функция и объяснение были Великолепно, спасибо большое! – McBooley

+0

@McBooley Я протестировал в версии 4.4.4.3 и увидел, что необоснованные ячейки вернули * # Value! * Вместо пустого; Я подумал из примечания в ошибке, с которой я связан, что это будет исправлено в более новых версиях. Но похоже, что у вас есть более новая версия и по-прежнему видя * * Value! * Неправильно нажатой через функцию 'IFERROR'? – Lyrl

+0

У меня есть LibreOffice5, и да, я получаю * # Value! * From ** IFERROR **, если нет возвращенных данных, в противном случае он отлично работает, конечно – McBooley

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