Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

Форум поддержки пользователей. LibreOffice, Apache OpenOffice, OpenOffice.org

13 Декабрь 2017, 23:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости: Здесь можно поблагодарить участников форума Улыбка
 
   Начало   Помощь Поиск Войти Регистрация    задать вопрос  
Страниц: 1 2 »   Вниз
  Печать  
Автор Тема: Поиск значения в массиве  (Прочитано 892 раз)
0 Пользователей и 1 Гость смотрят эту тему.
лена89
Новичок
*
Offline Offline

Сообщений: 7


« Стартовое сообщение: 23 Сентябрь 2017, 21:03 »

Добрый вечер. Помогите, пожалуйста, решить задачку.  Непонимающий Непонимающий
Есть два массива.

Надо проверить весь второй столбец на наличие в первом столбце и если номер нашелся. то против фамилии ставится да. Фамилии с номерами в первом столбце могут повторяться, а цифры во втором столбце уникальны.

Заранее благодарю. Только, если можно, без макросов. Пока в них не понимаю ничего. Может формула есть.


* Снимок экрана от 2017-09-24 00:56:48.png (50.14 Кб, 390x397 - просмотрено 25 раз.)
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #1: 23 Сентябрь 2017, 22:07 »

Если в первом столбце фамилия и число разделены пробелом, попробуйте такую формулу:
Код:
=IF(COUNTIF($C$1:$C$9;TRIM(SUBSTITUTE($A1;SPLIT($A1);"")));"да";"нет")
Записан

лена89
Новичок
*
Offline Offline

Сообщений: 7


« Ответ #2: 24 Сентябрь 2017, 05:25 »

Спасибо за ответ. Но функцию SPLIT почему-то не распознает мой LibreOffice
Записан
лена89
Новичок
*
Offline Offline

Сообщений: 7


« Ответ #3: 24 Сентябрь 2017, 06:42 »

Спасибо всем, кто, может-быть, озадачился моей проблемой. Но, поискав на форуме ( а кто ищет, тот всегда найдет), я решила проблему несколько по-другому, и этот вариант даже лучше, чем я хотела. Вот такая функция мне помогла.  
=SUMPRODUCT(NOT(ISERR(FIND(текст;диапазон)))).

В результате, ищется значение в  массиве, и суммируется , сколько раз оно встречается в массиве) вместо "да", "нет". Это даже лучше. Потому что, если бы просто писать "да" и "нет", то потом бы я озадачилась вопросом, сколько раз встречается в массиве "Федорова" под определенным номером. В общем, не знаю, как объяснила, но всем спасибо)
« Последнее редактирование: 24 Сентябрь 2017, 06:44 от лена89 » Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #4: 24 Сентябрь 2017, 07:49 »

Но функцию SPLIT почему-то не распознает мой LibreOffice
Наверно слишком старый LibreOffice, ниже пятой ветки. Я проверял на LibreOffice 5.0.6, там есть SPLIT.

Но, поискав на форуме ( а кто ищет, тот всегда найдет), я решила проблему несколько по-другому, и этот вариант даже лучше, чем я хотела. Вот такая функция мне помогла.  
=SUMPRODUCT(NOT(ISERR(FIND(текст;диапазон)))).

В результате, ищется значение в  массиве, и суммируется , сколько раз оно встречается в массиве) вместо "да", "нет". Это даже лучше. Потому что, если бы просто писать "да" и "нет", то потом бы я озадачилась вопросом, сколько раз встречается в массиве "Федорова" под определенным номером.
Хорошенько проверяйте даёт ли эта формула нужный вам результат. Для "Петрова 171" ответом будет не только "171", но и "1" и если есть, то и "17" и "71" и "7"
Записан

economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #5: 25 Сентябрь 2017, 13:10 »

лена89 - обновитесь и включите в LibreOffice 5 русские имена функций (как в Excel). Количество инфы по ним в Интернете просто огромно и позволит находить ответы в 10 раз быстрее. 

И, кстати, что это???:

Федорова 25 - да - 171
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
лена89
Новичок
*
Offline Offline

Сообщений: 7


« Ответ #6: 26 Сентябрь 2017, 10:47 »

Наверно слишком старый LibreOffice, ниже пятой ветки. Я проверял на LibreOffice 5.0.6, там есть SPLIT.

Обновила до 5.1 и все равно подчеркивает эту функцию. И Вы оказались правы. Считает именно всё, что включается в другие числа. 14, 1, 141, - всё суммирует. Печалька.
Записан
JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #7: 26 Сентябрь 2017, 11:07 »

@rami, посмотри, пожалуйста, у тебя этот SPLIT в пользовательских функциях случайно не затесался? Если он там, процитируй, пожалуйста.
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #8: 26 Сентябрь 2017, 11:53 »

Да, это мой ляп, давно поставил функцию в мастер функций и забыл. Эта функция только у меня на одном компе.
Записан

rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #9: 26 Сентябрь 2017, 13:05 »

Тогда пробуйте такую формулу:
Код:
=IF(COUNTIF($C$1:$C$9;TRIM(SUBSTITUTE($A1;LEFT($A1;SEARCH(" ";$A1));"")));"да";"нет")
Записан

JohnSUN
Капитана в тот день называли на "ты"
Гуру
*******
Offline Offline

Пол: Мужской
Расположение: Киев
Сообщений: 2 373


Помогаю людям и компьютерам понимать друг друга


WWW
« Ответ #10: 26 Сентябрь 2017, 13:12 »

Дык, это... А процитировать?
Тут давеча (прошлым летом) hubert lambert предложил расширениеpystring.oxt
Доступ к строковым методам python из Calc. В том числе и к SPLIT. Но там вызов посложнее будет
Код:
=PYSTRING("split";my_string;sep;max)
Всё никак не соберусь бэйсиковую обёртку накрутить, чтобы вызывать функции так, как у тебя в формуле записано
Записан

Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #11: 26 Сентябрь 2017, 13:22 »

Почти рядом: TutoAddIn.oxt
Записан

economist
Ветеран
*****
Offline Offline

Сообщений: 761


« Ответ #12: 26 Сентябрь 2017, 13:45 »

pystring.oxt - решение всех проблем со строками. Спасибо за наводку, JohnSUN
Можно прикрутить еще и перекодировку, и будет вообще прекрасно.
Записан

Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...
лена89
Новичок
*
Offline Offline

Сообщений: 7


« Ответ #13: 26 Сентябрь 2017, 14:28 »

Тогда пробуйте такую формулу:
Код:
=IF(COUNTIF($C$1:$C$9;TRIM(SUBSTITUTE($A1;LEFT($A1;SEARCH(" ";$A1));"")));"да";"нет")

Это работает. Но, мне нужна проверка по первому массиву. То есть, мне надо взять все  номера из столбца С и проверить на их наличие в первом столбце А. А тут формула наоборот считает.Берет номер из столбца А и проверяет по массиву С. ) И в поставленной задаче ответ всегда будет ДА. А мне нужно знать, грубо говоря, каких номеров из первого столбца нет в первом.
Записан
rami
Гуру
*******
Offline Offline

Пол: Мужской
Сообщений: 2 314


MacBook Pro, LibreOffice и Apache OpenOffice


« Ответ #14: 26 Сентябрь 2017, 15:12 »

Это работает. Но, мне нужна проверка по первому массиву. То есть, мне надо взять все  номера из столбца С и проверить на их наличие в первом столбце А. А тут формула наоборот считает.Берет номер из столбца А и проверяет по массиву С. ) И в поставленной задаче ответ всегда будет ДА.
Из выше приведённого примера видно, что номера 8 и 20 из столбца C отсутствуют в столбце A что с этим делать?
Сформулируйте точнее все условия.


А мне нужно знать, грубо говоря, каких номеров из первого столбца нет в первом.
Из первого столбца нет в первом тех, которые есть в первом, а не в первом. (пошёл мозг перезагружать)
Записан

Страниц: 1 2 »   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!