Обращение за данными из одного листа в другой, выбор с условием

Автор Katya, 6 мая 2021, 13:52

0 Пользователи и 1 гость просматривают эту тему.

Katya

Здравствуйте.

Пожалуйста, подскажите, как решить эту задачу. Решать нужно срочно, а опыта с Calc у меня почти нет.

Имеется таблица, где необходимо вставить размер скидки в зависимости от страны происхождения (образец1).
Данные о соответствии страны и размера скидки берутся из другой таблицы (60 стран происхождения, 2 вида скидок (образец2)).

Я пробовала сделать с IF, но список названий слишком большой: перечислить во вложенных IF 30 стран невозможно.
Можно ли указать в IF условие типа "если значение данной ячейки (название страны из таблицы образец1) содержится в ячейках A2:A27 таблицы образец2", то в эту строку столбца G таблицы образец1 вставить значение скидки 0,9. Если значение (название страны) содержится в ячейках A28:A37 - то вставить значение скидки 0,8.

Наверно, есть и другой способ.
Буду благодарна за комментарии!


bigor

Добрый день

Если таблицу со странами перенести на второй лист в книге с основной таблицей, то можно так
=IF(MATCH(F2;Лист2.$A$2:$A$37;0)<27;0,9;0,8)
нужно еще привести в соответствие название стран в таблицах
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

eeigor

@Bigor, нет возможности посмотреть файлы, но всё-таки имхо лучше уйти от разделения диапазонов. Добавить поле с видом скидки (1; 2), и искать его по всему диапазону стран. Затем по виду извлечь значение скидки из другого диапазона (всего два IF, а не 30). Использовать имена.
Ubuntu 18.04 LTS • LibreOffice 7.5.1.2 Community

bigor

&eeigor там можно и через ВПР() искать, но в файле числа в текстовом формате и что бы не заморачиваться разбил на диапазоны
Поддержать разработчиков LibreOffice можно можно тут, а наш форум вот тут

mikekaganski

VLOOKUP(F2;'образец2.ods'#$Sheet1.$A$2:$B$37;2;0)

Эта формула (например, в 'образец1.ods'#$Sheet1.$G$2) даст значение скидки. К сожалению, в виде текста, потому что столбец B в образец2.ods - текст. Можно это уже обернуть в комбинации NUMBERVALUE и IFNA по вкусу. Но на мой взгляд, не стоит ни делать ни проверки номера совпадения (это лишние заморочки), ни дефолтного значения при ненахождении: так проще найти ошибку типа BurkinaFaso вместо Burkina Faso. И преобразовав скидки в числа в исходной таблице, всё станет проще.
С уважением,
Михаил Каганский

Katya

Огромное спасибо за формулы и комментарии! Все получилось!
Страны я уже исправила вручную простой заменой - тех, что без пробелов, не так много.
А почему плохо, что числа в текстовом формате? Ведь результат умножения (скидка х стоимость) получается правильным.

mikekaganski

Цитата: Katya от  6 мая 2021, 16:33А почему плохо, что числа в текстовом формате? Ведь результат умножения (скидка х стоимость) получается правильным.

А потому что это работает только до тех пор, пока Вы используете программу с русской локалью. Как только у Вас окажется программа, настроенная на другую локаль (скажем, en-UK), всё перестанет считать. Потому что там десятичный разделитель - не запятая.
С уважением,
Михаил Каганский

Soloman

Здравствуйте. Подскажите как решить похожую чем-то задачу.
Требуется сделать копирование строк из одного листа (-ов) в другой лист или даже в отдельный файл по значению в ячейки копируемой строки. Нужно собрать необходимые данные в отдельном листе или файле (что проще не знаю) и чтобы наполнение этого листа (или файла) менялось в зависимости от значений в ячейке исходного (откуда будет происходить копирование) листа (файла).