4

Я пытаюсь обработать некоторые данные в Calc. Один из шагов включает в себя поиск, является ли определенная строка частью одного из столбцов. Я пытался использовать функции поиска и поиска. Оба ведут себя одинаково, и я не получаю правильных результатов.

Скажем, у меня есть следующие строки в столбце A

NY
SF
LON
CAN
US

и я пытаюсь поставить следующую формулу в столбце C

=SEARCH("NY",A2)

Результат - ячейка C2 будет иметь 1 (что правильно), но если та же формула будет скопирована в другие ячейки в столбце C - это даст мне «#VALUE!ошибка и я не могу выяснить почему?

У кого-нибудь есть идеи?

2 ответа2

5

Результат # #VALUE! является результатом по умолчанию, если поиск завершился неудачно (см. документацию OpenOffice.org Calc для функции ПОИСК). Поскольку все остальные строки не содержат "NY", это правильный результат для этих ячеек.

Я предполагаю, что вы ошибочно приняли результирующую "1" как "логический" результат, тогда как неудачный поиск привел бы к "0". Но это не так. В вышеупомянутой документации есть несколько примеров, включающих ISNUMBER и ISERROR для оценки результата функции ПОИСК.

2

Во-первых, если вы хотите искать текст в нескольких строках / столбцах, вам нужно указать диапазон ячеек, а не просто одну ячейку: A2:A6 или, что лучше, $A$2:$A$6 .

Во-вторых, когда вы копируете вставку или перевод одной формулы ячейки в другую, $ считается постоянной координатой. Допустим, вы положили формулу в C2. То, что скопировано в C3, даст =SEARCH("NY",A3) . Если вы скопируете это в D2, значение будет =SEARCH("NY",B2) .

Из того, что я прочитал в справке Libre Office, функции FIND и SEARCH ищут текст в другом тексте, и я предполагаю, что он соответствует значению в первой строке диапазона, который вы задаете. Так что эти функции не делают то, что вы ожидали.

Я провел некоторое исследование (пробовал разные вещи), и, кажется, вам лучше всего использовать функцию MATCH чтобы проверить, существует ли значение в диапазоне ячеек, и OFFSET чтобы получить напечатанное значение, а не индекс в диапазоне.

=OFFSET($A$2; MATCH("SF";$A$2:$A$6; 0) - 1; 0)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .