Страницы: 1 2 След.
RSS
Извлечь названия и количества товара
 
Есть таблица столбцов примерно 20, строк до 100 тысяч. В одном столбце содержится обобщенная информация. Название, описание и количество товара. Начальство требует дать данные какого товара сколько было продано. Вручную нереально, разбить текст из ячейки на столбцы пока непонятно как. Есть мысль все-таки как-то извлечь инфу по названию и количеству, поместив ее во вновь создаваемые столбцы, а остальные столбцы просто дублировать, т.е. размножить строки по количеству товаров в ячейке, чтобы потом воспользоваться сводной таблицей. Засада еще в том, что товаров в ячейке может быть от 1 до 35-ти (пока больше не встречал). Сам решить вряд ли в состоянии. Может кто помочь? Задача конечно не простая...
 
Интересная задача, надеюсь ее не быстро решат и я смогу поучаствовать  :) Можно разбить по столбцам с разделителем "_" потом редизайнером таблиц http://www.planetaexcel.ru/techniques/3/55/ и опять выделить бренд и тд разбивкой по столбцам или формулой/макросом.... Дальше получатся данные готовые к анализу. Но это не точно )
 
Количество вытащил. Проверяйте правильно или нет. А что именно из названия нужно извлечь не понятно.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Спасибо Bema!

Количества те, они после = стоят, тут разделитель понятен.
а названия - это то, что после _2.0_стоит, или _3.0_ и т.д. и до срока годности (допустим - если по 1 строке).
НО...
я приложил как бы это должно на мой взгляд выглядеть, - первая строка размножается на 11, т.к. там 11 товаров и желательно макросом сделать, чтобы просто числа встали, т.к. боюсь что сводная таблица запутается в этих формулах... Ведь строк доходит до 100 000 !
конечно можно бы и еще другую инфу из этой ячейки вывести, но пока хотя бы понять как название и количество вытащить... Принцип так сказать...
Насколько я понимаю - нужно искать разделители, так?
 
Дмитрию Тарковскому тоже спасибо, поизучаю про преобразование в плоскую таблицу, пока похоже это и нужно делать... Завтра потренируюсь!
 
Цитата
Manhill написал:
я приложил как бы это должно на мой взгляд выглядеть
Куда приложили?
Цитата
Manhill написал:
Насколько я понимаю - нужно искать разделители, так?
Да.
Откуда берете этот отчет? Может проще источник подрепетировать, что бы данные выводились в нормальном виде? Если у Вас 100 тыс. строк, то может та логика, которая работает на 5 строках не сработает на всех. Банально разделители будут другие.
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Странно, файл не приложился... Пробую еще раз. На файл от автора повлиять скорее всего не получится - эту базу закупают где-то...
 
Часть названий удалось извлечь, но даже для примера универсальную формулу не придумал. Думаю, что:
1) Задача не для формул;
2) Если нужно срочно решение, обратитесь в раздел Работа;
3) Зачем платить деньги за то, с чем нельзя нормально работать.
Цитата
Manhill написал:
эту базу закупают где-то
Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл
 
Согласен с Bema полностью :)
Часть названий товара не удалось корректно "вырезать" но в целом норм, хотел доделать сегодня поэтому код ужасен ))))
Причесать еще можно но тот кто делал такую выгрузку мог бы о разделителях подумать.
 
Посмотрите пример во вложении.
Откройте файл и выполните макрос "Main".
Все ли так, как требовалось?
Единственное условие это то, что столбец с описанием и количеством товаров должен быть последним в таблице.
Изменено: SAS888 - 19.04.2017 09:05:16
Чем шире угол зрения, тем он тупее.
 
SAS888, красиво. А у меня руки до массивов не доходят. Но все же названия товаров вместе с группами, вот если бы загнать в массив список с названиями групп товаров и дополнительно "обрезать"...
 
Цитата
Дмитрий Тарковский написал:
Но все же названия товаров вместе с группами, вот если бы загнать в массив список с названиями групп товаров и дополнительно "обрезать"...
Название группы товаров присутствует только в первом наименовании по каждому отправителю (получателю). В следующих строках их нет.
А как (по какому признаку) отделять наименование группы от наименования самого товара в первой позиции я не знаю. Если автор подскажет, то и этот вопрос будет решен.
Чем шире угол зрения, тем он тупее.
 
День добрый! Огромное спасибо за участие! Задача практически решена.
Пробую связаться с поставщиком по унификации выгрузки в ячейку.
Порылся в выгрузке - нашел еще примеры, в основном наименование идет все-таки после_1.0_ и т.д., дополнительные характеристики после _1.1_ и т.д., интересно, что можно еще срок годности, производителя, бренд вытащить. Не знаю нужно ли это... Наверное только производителя нужно.
Решение SAS888 конечно более красивое, без всяких дополнительных листов и колонок, но их можно после выполнения удалить, я думаю.
Приложил еще лист, который пробовал вашими макросами обработать - не выходит... в случае макроса от SAS888 пишет - Run-time error '9' Subscript out of range, а в макросе от Дмитрия - Run-time error '5' Invalid procedure call or argument.
Скорее всего из-за того что 80 товаров в 5-ой ячейке... поищу еще примеры в исходнике...
 
Помучил Лист2 при помощи Power Query, всё вытаскивается, но потом увидел Лист1 и плюнул - невозможно с такими данными работать хоть как-то. То есть ".0__", то его нет, то название с самого начала, то название после общего описания без разделителя... Нет, если очень нужно, то можно замучить, но только за деньги.
F1 творит чудеса
 
Цитата
Manhill написал:
в случае макроса от SAS888 пишет - Run-time error '9' Subscript out of range
Это потому, что у Вас на 2-ом листе структура данных отличается от листа 1.
На 1-ом листе (согласно которому написан макрос) в столбце с описанием товара, вообще отсутствует "_1.0_". Отсюда и ошибка.
Посмотрите прикрепленный файл. Доработал макрос для работы с листом 2.
С листом 1 он теперь работать не будет.
Если все устраивает, то можно добавить и остальные свойства товара (производитель, бренд, срок годности и т. д).
Изменено: SAS888 - 19.04.2017 12:18:25
Чем шире угол зрения, тем он тупее.
 
SAS888.
Да, все правильно, только я все это время выбирал максимально возможные количества товаров в ячейке, оказалось что больше 280 входит, но текст обрезается при загрузке в ячейку из базы данных, знаков больше чем 32 767 значит.
Пример приложил, вашим макросом попробовал - опять ошибку 9 выдает.
Мысль у меня такая - сможете еще макрос написать, чтобы я предварительно в ручном режиме поправил все ячейки где "_1.0_" нет или не там стоит (как в первой строке листа 2, причем я заметил, что в случае положения 1.0 не перед названием всегда есть комбинация "__1.0__ : __1.1__") - т.е. найти эти ячейки и поправить,
потом уже вашим макросом "main" (с остальными свойствами) пройти
и потом сделать сводную таблицу и анализировать...
 
Максим, ваш пример тоже хорош. интересен столбец - Ед.изм., он тоже нужен. Спасибо!
 
Цитата
Manhill написал:
вашим макросом попробовал - опять ошибку 9 выдает.
Это потому, что в некоторых наименованиях товаров отсутствует количество.
Посмотрите прикрепленный файл. Добавил контроль на наличие количества (срока годности, изготовителя и т. п.) и вывод всех свойств товаров.
Проверяйте.
Чем шире угол зрения, тем он тупее.
 
SAS888
Проверяю, только после макроса Эксель или экран тормозит по страшному, попробовал строку снизу добавить.
Application.ScreenUpdating = True
Не помогло...
 
Я подобного эффекта не наблюдаю. Может быть он проявляется на больших объемах данных.
Попробуйте последней строкой кода добавить:
Код
Erase a: Erase b: Erase c: Erase d: Erase arr: Set x = Nothing
Есть ли у Вас формулы на листе?
Чем шире угол зрения, тем он тупее.
 
Это торможение только когда открыто более 1 файла. Сейчас все заккрыл открыл только пример_4, запустил макрос - все быстренько ворочается. Как только стал открывать пример3 для сравнения - сразу все подвисло. Пример3 открывается очень медленно и даже на этом экране проявляется в то время как это пишу...
 
Ничего не могу сказать, т. к. не могу смоделировать Ваши "тормоза". Поищите их вне макроса...
Чем шире угол зрения, тем он тупее.
 
на тормоза пока забил - даже после перезагрузки и при включенном только Экселе тормоза такие же наблюдаются...
Проверил - все правильно, буду пробовать обрабатывать весь файл, только сначала поисправляю случаи "__1.0__ : __1.1__"
 
Почистил какое-то количество ячеек, и проверил сколько из всего - оказывается очень большой % 28 тысяч (20% примерно), это мне вручную еще несколько месяцев править. Продавцы молчат...
Приложил пример "кривых" ячеек, как бы в них "__1.0__" вынести в начало хотя бы и кол-во извлечь, оно там есть, только в виде "- 15 УПАК", "-5УПАК", еще оказалось что есть несколько серий с разным кол-вом упак отгруженных... что-то тоскливо стало...
А была такая надежда на решение.
М.б. все-таки как-то можно исходник "подлечить"?
 
А так макрос для 20-ти столбцов работает, все ок!
 
Посмотрите пример во вложении. Кое-что "подлечил".
Добавил в Ваш файл пару строк из предыдущего (правильного) примера, для проверки работоспособности.
Проверьте. Укажите, какие еще возможны "нестандартные" записи строк описания товара. Например, что еще, кроме "УПАК" может восприниматься, как количество?
Также, я не нашел примера, где
Цитата
есть несколько серий с разным кол-вом упак отгруженных...
Приведите пример такой строки и укажите, что делать в этом случае (суммировать?)
Изменено: SAS888 - 21.04.2017 07:53:40
Чем шире угол зрения, тем он тупее.
 
Здравствуйте, SAS888.
Что-то не хочет новый макрос у меня работать - пишет ошибку 1004 в 16-ой строке - "Range(Cells(2, j), Cells(i, j)).Value = a"
Примеры нестандартных выгрузок прилагаю.
Большое спасибо вам за участие!
 
По "вытягиванию" количества из нестандартных выгрузок я подумаю.
А пока, давайте разберемся с ошибкой.
Добавил в Ваш последний файл макрос (см. вложение). Ошибки нет.
Прикрепите тот файл с макросом, в котором возникает указанная Вами ошибка.

P.S. Похоже, что кроме нас с Вами этот вопрос уже никому не интересен. Поэтому, лучше пишите мне на e-mail. Контакты в профиле.
Чем шире угол зрения, тем он тупее.
 
Я слежу, просто понимаю что против Вашего кода я ничего лучшего не могу предложить, мне очень интересно!
 
Приложил принт-скрины, значения i=k=10, j=4? Седд(1, j и 2, j  - на скринах.
Ошибку выдает в присланном вами файле - я прям его запускаю, только при загрузке из форума всегда пишет что формат отличается от указанного, но я все разы открывал и работало... приложил его назад, м.б. у меня вирус какой....
Страницы: 1 2 След.
Наверх