Страницы: 1
RSS
Поиск и расшифровка маркировки товара в тексте ячейки, выявление маркировки в тексте ячейки
 
Добрый день.
Самому написать дельную функцию не получилось, поэтому прошу помощи опытных людей.

Задача стоит следующая.
Существует определённая маркировка товара, которая описывает его характеристики. (подробное описание маркировки на скриншоте)

Есть столбец из определённого количества ячеек содержащий текст. (пример оранжевая ячейка ). Текст может быть абсолютно разным.

Человек при взгляде на текст сразу поймет где маркировка (пример зелёная ячейка). Маркировка может рекомбинироваться в соответствии с значениями в серых столбцах
Нужно чтобы функция "находила" в тексте ячейки маркирову и выводила её как в зелёной ячейке

Маркировка идет строго последовательно в соответствии с расположением столбцов.
параметры Ду и Ру. являются дополнением к маркировке и могут быть расписаны по другому (развернуто или по английски) поэтому их лучше добавлять отдельно например выпадающим списком.

З.Ы. (значение Null обозначает что данная часть маркировки может быть пропущена. Т.е. без привода)
Изменено: Дмитрий Коба - 11.06.2020 11:22:52
 
Вот ЗДЕСЬ была подобная задача, может решение подойдет и Вам
 
На первый взгляд это выглядит как просто похожая.
Здесь недостаточно просто объединить символы из разных ячеек в одну. Необходимо именно заставить функцию найти среди всех символов в ячейке маркировку вида x-x-x-x-x (х: это переменные согласно столбцам) и вывести её (маркировку).
 
Так не подойдет
 
Возможно я изначально сделал недостаточный акцент в примере, но сканировать на наличие маркировки необходимо оранжевую  ячейку.

В применении таблица будет выглядеть из ячеек подобных оранжевой (в которых есть некоторый дополнительных текст и среди всего этого текста нужно "выдернуть" маркировку)

текст заносится автоматически и почти всегда имеет разное содержание, но данная маркировка есть всегда. Она может быть в любом месте текста.

Если это как то поможет, то изначально рисовался такой алгоритм. Маркировка всегда отделена пробелами (т.е. является самостоятельным словом) и можно сканировать каждое слово на наличие совпадений по символам. если первые два символа в слове совпадают с перечислениями из первого столбца то проверить третий символ на совпадение с вторым столбцом и так далее до пятого столбца. В случае несовпадения на каком либо из этапов проверки перейти к следующему пробелу(слову).
 
День добрый.
Что-то мне подсказывает, что с такими задачами вам в платную ветку.
 
Цитата
Текст заносится автоматически и почти всегда имеет разное содержание
Приведите несколько примеров
 
В данный момент могу дать только больше примеров текста.

Данные ячейки подгружаются текстом в общем формате из счетов 1С.
 
Дмитрий Коба, У Вас в оранжевой ячейке уже стоит маркировка:
Задвижка Ду250мм стальная, фланцевая Ру25атм. с ручным приводом и выдвижным штоком Т+420°С Lраб. - 450мм 30с64нж c КОФ
Может достаточно ее вынуть из строки и добавить ДУ и РУ
 
В этом и состоит задача.
Нужно вынуть маркировку.
Как заставить программу понять что среди текста есть "Определённое" слово состоящее из строго указанных переменных значений.
 
Может так:
 
30с64нж
На третьей позиции всегда с ?
Как я понял на месте нж может быть с|лс|нж|ч|кч|вч|бр|а|мн|п|вл|к|ТН|СК
 
Kuzmich вы правильно поняли. "С " не всегда, просто такие примеры попались.

и "С" это не третья а вторая переменная, первая всегда двухзначное число.

А вот именно третья (привод) выражается в однозначном числе, и иногда не пишется (если привода нет).

Т.е. после второй переменной (а именно буквы) обозначающей материал, идет некоторое число, которое в зависимости от количества цифр можно расшифровать по разному.
 
msi2102 Да почти идеально, только когда я ввожу несуществующую маркировку, например 19ч241бр (маркировки 2 в перечне приводов нет), функция все равно её отображает, а так быть не должно. Т.е. важно проверять именно на подлинность. если переменной в перечне нет, это может быть маркировка чего угодно, и её использовать нельзя, т.к. в дальнейшем может привести к проблемам при использовании результата.
 
К сожалению сейчас компьютера нет под рукой, если ни кто не поможет, то в понедельник попытаюсь помочь
 
Дмитрий Коба, написал
Цитата
"С " не всегда, просто такие примеры попались.
Какие еще буквы могут быть?
Если только буква с, то можно выделить эту часть при помощи UDF
Код
Function iMarkirovka(cell$)
 With CreateObject("VBScript.RegExp")
     .Global = True
     .Pattern = "\d+[с]\d+(?:с|лс|нж|ч|кч|вч|бр|а|мн|п|вл|к|ТН|СК)"
     iMarkirovka = .Execute(cell)(0)
 End With
End Function
 
Пробуйте
Страницы: 1
Наверх