И снова здраствуйте, Есть небольшой прайслист на 10000 строк. В первой колонке, в ячейках идет название товаров, а в 9ю колонку, по темже строкам, мне нужно выдернуть одну часть текста. Проблема заключаеться в том, что данная часть текста, являеться модельным номером оборудование и не всегда находиться вторым словом, в надписи. Бывает третьим словом, четвертым, пятым и т.д. Я не знаю как выследить закономерность чтоб составить правильную формулу, одну для всех позиций, тем более мне сложнее попросить помочь с макросом.
Например: Монитор 17' Acer V176LBMD (UM.BV6EE.005) Asus ZenFone Go (ZB452KG) DS Black Монитор LCD Asus 18.5' VS197DE D-Sub (90LMF1001T02201C-) Моноблок ASUS Z240ICGK-GC029X (90PT01E1-M01190) Неттоп ASUS UN65H-M107M (90MS00S1-M01070) ПК ASUS UN62-M003M (90MS00A1-M00030)
Жирным шрифтом, я выделил значения которые, каждый раз при помощи формул: 2 слово
Соответственно, ручками меняя номер куска текста в ячейке, я добиваюсь поставленой задачи. Но это так изматывает. Если кто может помочь с небольшим макросом, Если возможно этот нелегкий процес оптимизировать - буду премного благодарен. Спасибо. Файл пример прилагаю. В нем цветом -красный, выделил значения которые нужны в 9ом столбце.
P.S. В основном нужные мне значения идут сразу до скобок. Такие вещи, как в этом наименование,т.е. значение в скобках, можно не брать во внимание: Asus ZenFone Go (ZB452KG) DS Black - бывают очень редко, и значения со скобок можно просто НЕ переносить, оставляя ячейку в 9ом столбце пустой.
И снова здраствуйте, Есть небольшой прайслист на 10000 строк. В первой колонке, в ячейках идет название товаров, а в 9ю колонку, по темже строкам, мне нужно выдернуть одну часть текста. Проблема заключаеться в том, что данная часть текста, являеться модельным номером оборудование и не всегда находиться вторым словом, в надписи. Бывает третьим словом, четвертым, пятым и т.д. Я не знаю как выследить закономерность чтоб составить правильную формулу, одну для всех позиций, тем более мне сложнее попросить помочь с макросом.
Например: Монитор 17' Acer V176LBMD (UM.BV6EE.005) Asus ZenFone Go (ZB452KG) DS Black Монитор LCD Asus 18.5' VS197DE D-Sub (90LMF1001T02201C-) Моноблок ASUS Z240ICGK-GC029X (90PT01E1-M01190) Неттоп ASUS UN65H-M107M (90MS00S1-M01070) ПК ASUS UN62-M003M (90MS00A1-M00030)
Жирным шрифтом, я выделил значения которые, каждый раз при помощи формул: 2 слово
Соответственно, ручками меняя номер куска текста в ячейке, я добиваюсь поставленой задачи. Но это так изматывает. Если кто может помочь с небольшим макросом, Если возможно этот нелегкий процес оптимизировать - буду премного благодарен. Спасибо. Файл пример прилагаю. В нем цветом -красный, выделил значения которые нужны в 9ом столбце.
P.S. В основном нужные мне значения идут сразу до скобок. Такие вещи, как в этом наименование,т.е. значение в скобках, можно не брать во внимание: Asus ZenFone Go (ZB452KG) DS Black - бывают очень редко, и значения со скобок можно просто НЕ переносить, оставляя ячейку в 9ом столбце пустой.wwizard
Наверное опять замечание будет! Формулы надо заключать в теги.
Код работает правильно если только номер вне скобок и если без пробела. Чем богат. Совершенствуйте. [vba]
Код
Sub tekst() Dim St$, ps&, i&, ns&, n& ps = Range("A" & Rows.Count).End(xlUp).Row For i = 2 To ps St = Cells(i, 1) ns = InStr(St, "(") If ns > 1 Then St = Mid(St, 1, ns - 2) n = InStrRev(St, " ") Cells(i, 9) = Mid(St, n) End If Next End Sub
[/vba]
Наверное опять замечание будет! Формулы надо заключать в теги.
Код работает правильно если только номер вне скобок и если без пробела. Чем богат. Совершенствуйте. [vba]
Код
Sub tekst() Dim St$, ps&, i&, ns&, n& ps = Range("A" & Rows.Count).End(xlUp).Row For i = 2 To ps St = Cells(i, 1) ns = InStr(St, "(") If ns > 1 Then St = Mid(St, 1, ns - 2) n = InStrRev(St, " ") Cells(i, 9) = Mid(St, n) End If Next End Sub
А отладчиком пройтись? Находим первую скобку "(" в строке и вырезаем текст до конца. Находим первый пробел справа налево и вырезаем всё до пробела, остается код. Если код с пробелом, то будет не полный, здесь проблема. И да, если в строке, где код в скобках, в конце строки нет скобки ")", то код в скобках можно исключить из выбора так [vba]
А отладчиком пройтись? Находим первую скобку "(" в строке и вырезаем текст до конца. Находим первый пробел справа налево и вырезаем всё до пробела, остается код. Если код с пробелом, то будет не полный, здесь проблема. И да, если в строке, где код в скобках, в конце строки нет скобки ")", то код в скобках можно исключить из выбора так [vba]
Не совсем, к сожалению весь прайс не пройти и ручками лишнее не поудалять, получиться та же работа, что я формулу вставляю. Вот что получилось: http://prntscr.com/dnz2o5
Или может можно добавить проверку, например такую: брать данный код только в том случае, если в строке встречаются следующие слова: Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer. Для других товаров это не требуеться. И плюс: исключить список слов, скажем представленных на листе 2 в 4ом столбце. (я же могу туда указать, список Всех слов, которые надо исключать, очищая ячейку)
Не совсем, к сожалению весь прайс не пройти и ручками лишнее не поудалять, получиться та же работа, что я формулу вставляю. Вот что получилось: http://prntscr.com/dnz2o5
Или может можно добавить проверку, например такую: брать данный код только в том случае, если в строке встречаются следующие слова: Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer. Для других товаров это не требуеться. И плюс: исключить список слов, скажем представленных на листе 2 в 4ом столбце. (я же могу туда указать, список Всех слов, которые надо исключать, очищая ячейку)wwizard
Сообщение отредактировал wwizard - Понедельник, 26.12.2016, 14:01
Файл приложил. Красным в нем пометил, те артикли которые нужны.
Можно ли добавить проверку, например такую: брать данный код только в том случае, если в строке встречаются следующие слова: Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer. Для других товаров это не требуется. И плюс: исключить список слов, скажем представленных на листе 2 в 4ом столбце. (я же могу туда указать, список Всех слов, которые надо исключать, очищая ячейку)
Файл приложил. Красным в нем пометил, те артикли которые нужны.
Можно ли добавить проверку, например такую: брать данный код только в том случае, если в строке встречаются следующие слова: Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer. Для других товаров это не требуется. И плюс: исключить список слов, скажем представленных на листе 2 в 4ом столбце. (я же могу туда указать, список Всех слов, которые надо исключать, очищая ячейку)wwizard
если в строке встречаются следующие слова:Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer
Поместите их на лист 2 в колонку "Е" с 1-й строки. Будет проверка наличия их в тексте. Можно добавлять/удалять. Дальше не знаю, нет конкретной привязки. Может кто лучше сообразит. [vba]
Код
Sub tekst() Dim St$, i&, j&, s&, ns&, n&, X$ For i = 2 To Range("A" & Rows.Count).End(xlUp).Row St = Trim(Cells(i, "A")) With Sheets("Лист2") For j = 1 To .Range("E" & Rows.Count).End(xlUp).Row ns = InStr(St, .Cells(j, "E")) If ns > 0 Then St = Replace(St, "Black ", "") ns = InStr(St, "(") If ns > 1 Then St = Mid(St, 1, ns - 2) n = InStrRev(St, " ") Cells(i, 9) = Mid(St, n) End If Exit For End If Next End With Next End Sub
если в строке встречаются следующие слова:Ноутбук Asus, Ноутбук ACER, Проектор Acer, Монитор Asus, Монитор Acer
Поместите их на лист 2 в колонку "Е" с 1-й строки. Будет проверка наличия их в тексте. Можно добавлять/удалять. Дальше не знаю, нет конкретной привязки. Может кто лучше сообразит. [vba]
Код
Sub tekst() Dim St$, i&, j&, s&, ns&, n&, X$ For i = 2 To Range("A" & Rows.Count).End(xlUp).Row St = Trim(Cells(i, "A")) With Sheets("Лист2") For j = 1 To .Range("E" & Rows.Count).End(xlUp).Row ns = InStr(St, .Cells(j, "E")) If ns > 0 Then St = Replace(St, "Black ", "") ns = InStr(St, "(") If ns > 1 Then St = Mid(St, 1, ns - 2) n = InStrRev(St, " ") Cells(i, 9) = Mid(St, n) End If Exit For End If Next End With Next End Sub
Будет проверка наличия их в тексте. Можно добавлять/удалять. Дальше не знаю, нет конкретной привязки. Может кто лучше сообразит.
Супер работает. Осталось только прописать условие - Удалить из результата в листе 1 в колонке 9, если найдено сопоставления с Лист2 колонка 4. Чтоб такие вещи удалять: http://prntscr.com/do33l3
Будет проверка наличия их в тексте. Можно добавлять/удалять. Дальше не знаю, нет конкретной привязки. Может кто лучше сообразит.
Супер работает. Осталось только прописать условие - Удалить из результата в листе 1 в колонке 9, если найдено сопоставления с Лист2 колонка 4. Чтоб такие вещи удалять: http://prntscr.com/do33l3wwizard
s = Range("I" & Rows.Count).End(xlUp).Row For j = 2 To .Range("D" & Rows.Count).End(xlUp).Row St = .Cells(j, 4) Range("I2:I" & s).Replace St, "", xlPart Next
s = Range("I" & Rows.Count).End(xlUp).Row For j = 2 To .Range("D" & Rows.Count).End(xlUp).Row St = .Cells(j, 4) Range("I2:I" & s).Replace St, "", xlPart Next