Есть интересный прайс лист. И наверное то что я сейчас спрошу, сделать невозможно, но я все же спрошу. А вдруг. В прайслисте, есть столбец с наименованием товаров, например:
Ноутбук 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й столбец. До недавнего времени, я пользовался формулой:
Но когда позиций пару десятков, не проблема сменить значение, сколько отнимать в то или иное время. А как быть когда позиций 11000 шт?
Есть интересный прайс лист. И наверное то что я сейчас спрошу, сделать невозможно, но я все же спрошу. А вдруг. В прайслисте, есть столбец с наименованием товаров, например:
Ноутбук 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й столбец. До недавнего времени, я пользовался формулой:
Есть шанс, что задача выполнимая. Главное - уловить закономерность написания модели. Вот, например, из Ваших данных видно, что модель написана не только ДО скобок, но и после наименования бренда. Возможно, стоит ещё разбить логику по брендам: если окажется, что все модели ноутбуков Asus имеют дефис и заданную длину слов - то как минимум с ними уже можно разобраться. Если все Apple, у которых модель может быть указана, имеют модель формата А####, где # - это любая цифра (с любым количеством цифр), то можно уже разобраться и с этим брендом.
Более точно можно было бы сказать, взглянув на исходные данные. Однако ввиду предполагаемой трудоёмкости это задача уже для Вашего личного исследования или платного раздела форума.
wwizard, здравствуйте.
Есть шанс, что задача выполнимая. Главное - уловить закономерность написания модели. Вот, например, из Ваших данных видно, что модель написана не только ДО скобок, но и после наименования бренда. Возможно, стоит ещё разбить логику по брендам: если окажется, что все модели ноутбуков Asus имеют дефис и заданную длину слов - то как минимум с ними уже можно разобраться. Если все Apple, у которых модель может быть указана, имеют модель формата А####, где # - это любая цифра (с любым количеством цифр), то можно уже разобраться и с этим брендом.
Более точно можно было бы сказать, взглянув на исходные данные. Однако ввиду предполагаемой трудоёмкости это задача уже для Вашего личного исследования или платного раздела форума.Rioran
Роман, Москва, voronov_rv@mail.ru Яндекс-Деньги: 41001312674279
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]
На данных примера - можно так: [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
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]
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
прикольно, а по какому принципу он понимает, откуда что брать, В основном везде угадал, есть некоторые моменты где не попал, удалено администрацией , но все же прикольно.
прикольно, а по какому принципу он понимает, откуда что брать, В основном везде угадал, есть некоторые моменты где не попал, удалено администрацией , но все же прикольно.wwizard
В топике нарушено одно из основных "нормальных" правил БД - атомарность. Вместо одного поля неободимо как минимум 4: - Тип устройства - Производитель - Модель - Маркировка
Следовало бы сделать не одну а 4 колонки. А для печати можно было бы разметить другой лист этой же книги, куда автоматически прописывалось бы сцепленное полное наименование товара (по событию Worksheet_Change например)
В топике нарушено одно из основных "нормальных" правил БД - атомарность. Вместо одного поля неободимо как минимум 4: - Тип устройства - Производитель - Модель - Маркировка
Следовало бы сделать не одну а 4 колонки. А для печати можно было бы разметить другой лист этой же книги, куда автоматически прописывалось бы сцепленное полное наименование товара (по событию Worksheet_Change например)SGerman
Мудрость приходит со старостью. Но иногда старость приходит одна :)