Настоящая таблица очень большая порядка 8 - 10 тыс. строк на листе "Данные" тоже самое, потому файл обрезан до минимума.
Суть: нужно привести столбец "наименование" к ближайшему подходящему значению с листа "Данные", т.е. заменить значение. Ключом является цифровая часть наименования. Прочитал много тем по замене текста, перепробовал все! Но к сожалению либо печаль, либо куча несоответствий. Потому решил попытать счастья тут. Пробовал обработку найти и заменить, но она не даёт 100% результата. Предположительно думаю должен быть макрос, с использованием библиотек т.к. объём оч внушительный.
Любая помощь, совет, направление приветствуется.
Добрый день!
Нужна помощь специалиста VBA.
Настоящая таблица очень большая порядка 8 - 10 тыс. строк на листе "Данные" тоже самое, потому файл обрезан до минимума.
Суть: нужно привести столбец "наименование" к ближайшему подходящему значению с листа "Данные", т.е. заменить значение. Ключом является цифровая часть наименования. Прочитал много тем по замене текста, перепробовал все! Но к сожалению либо печаль, либо куча несоответствий. Потому решил попытать счастья тут. Пробовал обработку найти и заменить, но она не даёт 100% результата. Предположительно думаю должен быть макрос, с использованием библиотек т.к. объём оч внушительный.
Любая помощь, совет, направление приветствуется.ZamoK
Перезалил файлик. Не знаю какой алгоритм будет лучше, но если бы допустим появлялось какое-либо диалоговое окно в случае отсутствия позиции на листе "Данные", то было бы совсем хорошо, но это по возможности.
Перезалил файлик. Не знаю какой алгоритм будет лучше, но если бы допустим появлялось какое-либо диалоговое окно в случае отсутствия позиции на листе "Данные", то было бы совсем хорошо, но это по возможности.ZamoK
sboy, Вроде все хорошо, только есть номера с двумя точками на конце (я этот момент упустил) формула подхватывает именно его, а нужен без точек. Файл обновил
И ещё у меня макрос протягивает формулу до конца списка [vba]
[/vba] Он её превращает в простую формулу из формулы массива, может как-то по другому протягивать?
sboy, Вроде все хорошо, только есть номера с двумя точками на конце (я этот момент упустил) формула подхватывает именно его, а нужен без точек. Файл обновил
И ещё у меня макрос протягивает формулу до конца списка [vba]
Sub formula() fa = "=INDEX(Данные,MAX(ISNUMBER(SEARCH(SUBSTITUTE(SUBSTITUTE(Данные,""."",""""),"" "",""""),SUBSTITUTE(SUBSTITUTE(RC[-5],""."",""""),"" "","""")))*ROW(Данные)))" For Each cl In Range("G2:G" & Cells(Rows.Count, 1).End(xlUp).Row).Cells cl.FormulaArray = fa Next cl End Sub
[/vba] так работает
[vba]
Код
Sub formula() fa = "=INDEX(Данные,MAX(ISNUMBER(SEARCH(SUBSTITUTE(SUBSTITUTE(Данные,""."",""""),"" "",""""),SUBSTITUTE(SUBSTITUTE(RC[-5],""."",""""),"" "","""")))*ROW(Данные)))" For Each cl In Range("G2:G" & Cells(Rows.Count, 1).End(xlUp).Row).Cells cl.FormulaArray = fa Next cl End Sub
ZamoK, ваш файл работает нормально, макросом формула нормально вставляется... Что Вы от него ждете? Если Вы хотите, чтобы заменялись данные в столбце В, то макрос нужно дописывать
ZamoK, ваш файл работает нормально, макросом формула нормально вставляется... Что Вы от него ждете? Если Вы хотите, чтобы заменялись данные в столбце В, то макрос нужно дописыватьsboy