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

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

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

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

Сообщений: 4


« Стартовое сообщение: 30 Июль 2019, 09:15 »

Здравствуйте. Пытаюсь облегчить работу себе и сотруднице в обработке прайсов от поставщиков, пришлось заморочиться так как товара надо грузить от 1000 позиций. Покопался в интернете, сделал, чтобы по названию товара формулой отделялась категория и в конце убираем пробел, но есть проблема если исходное выражение без пробела, то будет выдаваться ошибка в значении. Как это решить? Прошу помочь

 Так же меня интересует вопрос, так как некоторые товары могут иметь разные названия, но относиться к другой категории, я ставлю условие - есть возможность как-то упростить его?

Файл прилагаю.


* importcopy.ods (21.12 Кб - загружено 7 раз.)
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 455


« Ответ #1: 30 Июль 2019, 10:07 »

Вариант:

  • Обновитесь до LibreOffice 6.2
  • Добавьте лист-справочник с заменами (я его назвал subst), где в столбце A - "неправильные" названия, а в B - каноничное название категории
    У меня это были две строки: Блузка | Блуза и Рубашка-Туника | Рубашка
  • 3. Используйте формулу (в B2):
Код:
=IFNA(VLOOKUP(REGEX(A2;"^\S+");$subst.A:B;2;0);REGEX(A2;"^\S+"))
В условиях отсутствия отдельного столбца для результатов REGEX эта функция будет вызвана дважды. Тем не менее даже в таком виде функция короче и проще для редактирования.
Записан

С уважением,
Михаил Каганский
Bigor
Опытный пользователь
***
Offline Offline

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


« Ответ #2: 30 Июль 2019, 10:26 »

А просто по первым 4 буквам нельзя идентифицировать категорию?
например
Код:
=ifs(left(a1;4)="Блуз";"Блузка";left(a1;4)="Руба";"Рубашка")
Записан
TYMON
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #3: 30 Июль 2019, 10:39 »

Спасибо за варианты ответов, очень хорошие решения, подумаю какой будет все-таки удобней использовать вариант.

Такой вопрос немного казусный, но а вдруг, можно каким-то образом сохранять формулы в CSV формате? Чтобы каждый раз не пересохранять из ods в csv? Потому как для нашего импорта нужен именно csv
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 455


« Ответ #4: 30 Июль 2019, 11:29 »

Программа умеет считывать формулы из CSV, потому что есть такие документы. Есть даже баг на тему "ЛО не должен читать формулы из CSV!".

Сохранение формул тоже поддерживается: для этого надо отметить опцию "изменить настройки фильтра" (как-то так) в диалоге выбора имени файла при сохранении.

Нужно только помнить, что при сохранении CSV сохранится только один лист (если их несколько).
Записан

С уважением,
Михаил Каганский
TYMON
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #5: 30 Июль 2019, 12:00 »

Спасибо за рекомендации

Вот с этой формулой

Код:
=IFNA(VLOOKUP(REGEX(A2;"^\S+");$subst.A:B;2;0);REGEX(A2;"^\S+"))

Забыл указать такой случай, если товар например состоит из трех слов "Спортивные штаны 4598" и "Спортивные шорты 1548"? то он только "спортивные выделит", что в таком случае делать? Надо бы просто чтобы оставались категории спортивные штаны и спортивные шорты отдельно
Записан
mikekaganski
Мастер
*****
Offline Offline

Пол: Мужской
Расположение: Хабаровск -> Москва
Сообщений: 1 455


« Ответ #6: 30 Июль 2019, 12:16 »

Тогда я бы переделал логику: в справочник вписывал бы *все* возможные названия категорий, в т.ч. и правильные.

Получился бы справочник типа
Код:
Блуза | Блуза
Блузка | Блуза
Рубашка | Рубашка
Рубашка-Туника | Рубашка
Спортивные штаны | Спортивные штаны

И тогда формула приняла бы вид
Код:
=IFNA(VLOOKUP(REGEX(A2;"\S+");$subst.A:B;2;0);VLOOKUP(REGEX(A2;"\S+ \S+");$subst.A:B;2;0))
Это бы выводило ошибки для всех категорий, ещё не добавленных в справочник, так что первоначальная работа состояла бы в заполнении справочника.
Записан

С уважением,
Михаил Каганский
TYMON
Новичок
*
Offline Offline

Сообщений: 4


« Ответ #7: 30 Июль 2019, 13:15 »

Понятно, спасибо!
Записан
Страниц: 1   Вверх
  Печать  
 
Перейти в:  

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