Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Высеять модель товара в отдельный столбец, невозможное. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Высеять модель товара в отдельный столбец, невозможное. (Макросы/Sub)
Высеять модель товара в отдельный столбец, невозможное.
wwizard Дата: Понедельник, 18.07.2016, 01:17 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Есть интересный прайс лист. И наверное то что я сейчас спрошу, сделать невозможно, но я все же спрошу. А вдруг.
В прайслисте, есть столбец с наименованием товаров, например:

Ноутбук ACER VN7-571G-50ZN (NX.MUXEU.008)
Ноутбук ACER VN7-591G-57YD (NX.MUUEU.005)
Ноутбук Acer AS VN7-791G-588X (NX.MQREU.009)
Ноутбук ACER Packard Bell ENTG81BA-C7WA (NX.C3YEU.009)
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A)
Ноутбук ASUS E402SA-WX082T (90NB0B62-M02450)

и тд.

Как выудить в Отдельный, скажем [9] столбец, модель данного товара, если она находится ДО скопок, и каждый раз, меняет свое расположение по оношению к одному и томуже месту расположения. К примеру:
Ноутбук ACER VN7-591G-57YD (NX.MUUEU.005) модель VN7-591G-57YD
а тут:
Ноутбук ACER Packard Bell ENTG81BA-C7WA (NX.C3YEU.009) модель - ENTG81BA-C7WA
или уже тут:
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A) модель - A1534

И все эти модели мне нужно вывести в 9й столбец. До недавнего времени, я пользовался формулой:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(RC[-8];" ";ПОВТОР(" ";250));(3-1)*250+1;250))

Но когда позиций пару десятков, не проблема сменить значение, сколько отнимать в то или иное время. А как быть когда позиций 11000 шт?
К сообщению приложен файл: PROBA35.xlsx (11.0 Kb)


Сообщение отредактировал Pelena - Понедельник, 18.07.2016, 07:47
 
Ответить
СообщениеЕсть интересный прайс лист. И наверное то что я сейчас спрошу, сделать невозможно, но я все же спрошу. А вдруг.
В прайслисте, есть столбец с наименованием товаров, например:

Ноутбук ACER VN7-571G-50ZN (NX.MUXEU.008)
Ноутбук ACER VN7-591G-57YD (NX.MUUEU.005)
Ноутбук Acer AS VN7-791G-588X (NX.MQREU.009)
Ноутбук ACER Packard Bell ENTG81BA-C7WA (NX.C3YEU.009)
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A)
Ноутбук ASUS E402SA-WX082T (90NB0B62-M02450)

и тд.

Как выудить в Отдельный, скажем [9] столбец, модель данного товара, если она находится ДО скопок, и каждый раз, меняет свое расположение по оношению к одному и томуже месту расположения. К примеру:
Ноутбук ACER VN7-591G-57YD (NX.MUUEU.005) модель VN7-591G-57YD
а тут:
Ноутбук ACER Packard Bell ENTG81BA-C7WA (NX.C3YEU.009) модель - ENTG81BA-C7WA
или уже тут:
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A) модель - A1534

И все эти модели мне нужно вывести в 9й столбец. До недавнего времени, я пользовался формулой:
Код
=СЖПРОБЕЛЫ(ПСТР(ПОДСТАВИТЬ(RC[-8];" ";ПОВТОР(" ";250));(3-1)*250+1;250))

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

Автор - wwizard
Дата добавления - 18.07.2016 в 01:17
Rioran Дата: Понедельник, 18.07.2016, 11:51 | Сообщение № 2
Группа: Авторы
Ранг: Ветеран
Сообщений: 903
Репутация: 290 ±
Замечаний: 0% ±

Excel 2013
wwizard, здравствуйте.

Есть шанс, что задача выполнимая. Главное - уловить закономерность написания модели. Вот, например, из Ваших данных видно, что модель написана не только ДО скобок, но и после наименования бренда. Возможно, стоит ещё разбить логику по брендам: если окажется, что все модели ноутбуков Asus имеют дефис и заданную длину слов - то как минимум с ними уже можно разобраться. Если все Apple, у которых модель может быть указана, имеют модель формата А####, где # - это любая цифра (с любым количеством цифр), то можно уже разобраться и с этим брендом.

Более точно можно было бы сказать, взглянув на исходные данные. Однако ввиду предполагаемой трудоёмкости это задача уже для Вашего личного исследования или платного раздела форума.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279
 
Ответить
Сообщениеwwizard, здравствуйте.

Есть шанс, что задача выполнимая. Главное - уловить закономерность написания модели. Вот, например, из Ваших данных видно, что модель написана не только ДО скобок, но и после наименования бренда. Возможно, стоит ещё разбить логику по брендам: если окажется, что все модели ноутбуков Asus имеют дефис и заданную длину слов - то как минимум с ними уже можно разобраться. Если все Apple, у которых модель может быть указана, имеют модель формата А####, где # - это любая цифра (с любым количеством цифр), то можно уже разобраться и с этим брендом.

Более точно можно было бы сказать, взглянув на исходные данные. Однако ввиду предполагаемой трудоёмкости это задача уже для Вашего личного исследования или платного раздела форума.

Автор - Rioran
Дата добавления - 18.07.2016 в 11:51
Karataev Дата: Понедельник, 18.07.2016, 12:20 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1334
Репутация: 533 ±
Замечаний: 0% ±

Excel
wwizard, а здесь какая закономерность? Здесь ведь модель не перед скобками:
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A)
 
Ответить
Сообщениеwwizard, а здесь какая закономерность? Здесь ведь модель не перед скобками:
Ноутбук Apple A1534 MacBook 12' Retina (MK4M2UA/A)

Автор - Karataev
Дата добавления - 18.07.2016 в 12:20
SLAVICK Дата: Понедельник, 18.07.2016, 13:35 | Сообщение № 4
Группа: Модераторы
Ранг: Старожил
Сообщений: 2290
Репутация: 766 ±
Замечаний: 0% ±

2019
На данных примера - можно так:
[vba]
Код
Function d(s$)
m = Split(s, " ")
For Each i In m
If i Like "*[0-9]*" And i Like "*[A-z]*" And InStr(1, i, "(") = 0 Then d = i: Exit Function
Next
End Function
[/vba]
К сообщению приложен файл: dd.xlsm (17.0 Kb)


Иногда все проще чем кажется с первого взгляда.
 
Ответить
СообщениеНа данных примера - можно так:
[vba]
Код
Function d(s$)
m = Split(s, " ")
For Each i In m
If i Like "*[0-9]*" And i Like "*[A-z]*" And InStr(1, i, "(") = 0 Then d = i: Exit Function
Next
End Function
[/vba]

Автор - SLAVICK
Дата добавления - 18.07.2016 в 13:35
pabchek Дата: Понедельник, 18.07.2016, 14:03 | Сообщение № 5
Группа: Проверенные
Ранг: Ветеран
Сообщений: 931
Репутация: 218 ±
Замечаний: 0% ±

Excel 2007
Формула не оптимизирована. Направление мысли правильное? Если да, попробую сократить
Код
=ПСТР(ПСТР(A1;ПОИСК(J1;A1)+ДЛСТР(J1)+1;99);1;ПОИСК(" ";ПСТР(A1;ПОИСК(J1;A1)+ДЛСТР(J1)+1;99))-1)
К сообщению приложен файл: 3349562.xlsx (11.1 Kb)


"Учиться, учиться и еще раз учиться!"
WM: R399923528092
 
Ответить
СообщениеФормула не оптимизирована. Направление мысли правильное? Если да, попробую сократить
Код
=ПСТР(ПСТР(A1;ПОИСК(J1;A1)+ДЛСТР(J1)+1;99);1;ПОИСК(" ";ПСТР(A1;ПОИСК(J1;A1)+ДЛСТР(J1)+1;99))-1)

Автор - pabchek
Дата добавления - 18.07.2016 в 14:03
sv2014 Дата: Понедельник, 18.07.2016, 14:11 | Сообщение № 6
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 226
Репутация: 61 ±
Замечаний: 0% ±

Excel 2013
wwizard, вариант функции uuu1 в столбце K

[vba]
Код
Function uuu1(t$)
With CreateObject("VBScript.RegExp"): .Pattern = "\S+\d+\S+"
   If .test(t) Then uuu1 = .Execute(t)(0) Else uuu1 = ""
End With
End Function
[/vba]
К сообщению приложен файл: example_18_07_2.xls (40.5 Kb)


Сообщение отредактировал sv2014 - Понедельник, 18.07.2016, 14:12
 
Ответить
Сообщениеwwizard, вариант функции uuu1 в столбце K

[vba]
Код
Function uuu1(t$)
With CreateObject("VBScript.RegExp"): .Pattern = "\S+\d+\S+"
   If .test(t) Then uuu1 = .Execute(t)(0) Else uuu1 = ""
End With
End Function
[/vba]

Автор - sv2014
Дата добавления - 18.07.2016 в 14:11
wwizard Дата: Понедельник, 18.07.2016, 16:55 | Сообщение № 7
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

вариант функции uuu1 в столбце K


прикольно, а по какому принципу он понимает, откуда что брать, В основном везде угадал, есть некоторые моменты где не попал, удалено администрацией , но все же прикольно.
 
Ответить
Сообщение
вариант функции uuu1 в столбце K


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

Автор - wwizard
Дата добавления - 18.07.2016 в 16:55
devilkurs Дата: Понедельник, 18.07.2016, 17:23 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 167
Репутация: 43 ±
Замечаний: 0% ±

Excel 2007, 2010
[offtop]очень интересное решение!!! супер![/offtop]




Сообщение отредактировал devilkurs - Понедельник, 18.07.2016, 17:23
 
Ответить
Сообщение[offtop]очень интересное решение!!! супер![/offtop]

Автор - devilkurs
Дата добавления - 18.07.2016 в 17:23
SGerman Дата: Понедельник, 18.07.2016, 19:59 | Сообщение № 9
Группа: Пользователи
Ранг: Участник
Сообщений: 97
Репутация: 4 ±
Замечаний: 20% ±

Excel 2003
В топике нарушено одно из основных "нормальных" правил БД - атомарность.
Вместо одного поля неободимо как минимум 4:
- Тип устройства
- Производитель
- Модель
- Маркировка

Следовало бы сделать не одну а 4 колонки. А для печати можно было бы разметить другой лист этой же книги, куда автоматически прописывалось бы сцепленное полное наименование товара (по событию Worksheet_Change например)


Мудрость приходит со старостью. Но иногда старость приходит одна :)
 
Ответить
СообщениеВ топике нарушено одно из основных "нормальных" правил БД - атомарность.
Вместо одного поля неободимо как минимум 4:
- Тип устройства
- Производитель
- Модель
- Маркировка

Следовало бы сделать не одну а 4 колонки. А для печати можно было бы разметить другой лист этой же книги, куда автоматически прописывалось бы сцепленное полное наименование товара (по событию Worksheet_Change например)

Автор - SGerman
Дата добавления - 18.07.2016 в 19:59
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Высеять модель товара в отдельный столбец, невозможное. (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!