Здравствуйте, уважаемые специалисты. Прошу помочь с такой задачей. Необходимо сравнить наименования из таблицы А с ассортиментом таблицы Б и вынести на отдельный лист «результат»таблицы Б столбцы с наименованиями и ценамииз обеих таблицсовпавших позиций друг напротив друга. Проблема заключается в том, что наименования не одинаковые, а только похожие. Например, эти позиции будут одинаковыми и должны быть вынесены на лист «результат»: в таблице А - Виброизолятор GG-1300, GG-2800, GG-3300, GP-55 в таблице Б - Виброизолятор GG1300,3300(2020) ген/GG2700,2800,3300,3500BSген/двиг/GP55 двиг, CHAMPION
Здравствуйте, уважаемые специалисты. Прошу помочь с такой задачей. Необходимо сравнить наименования из таблицы А с ассортиментом таблицы Б и вынести на отдельный лист «результат»таблицы Б столбцы с наименованиями и ценамииз обеих таблицсовпавших позиций друг напротив друга. Проблема заключается в том, что наименования не одинаковые, а только похожие. Например, эти позиции будут одинаковыми и должны быть вынесены на лист «результат»: в таблице А - Виброизолятор GG-1300, GG-2800, GG-3300, GP-55 в таблице Б - Виброизолятор GG1300,3300(2020) ген/GG2700,2800,3300,3500BSген/двиг/GP55 двиг, CHAMPIONMarandi
Помещаем оба списка на один лист рядом, с зазором в 3-4 колонки. Сортируем каждый по отдельности по возрастанию наименований.
Выбираем первую строку из левого списка, в свободной колонке справа (от левого списка) ставим цифру "1". Визуально просматриваем правый список. Найдя совпадение справа, метим его в свободной колонке слева (от правого списка) также цифрой "1". Первое совпадение найдено - строки обоих списков связаны кодом "1".
Переходим к следующей строке слева, метим ее цифрой "2" и т.д. Можно написать несложный макрос, который по двойному клику мышкой будет сам проставлять очередную цифру сравнения (и соответственно сам их последовательно считать). Это, правда, несложно - когда-то сам писал нечто подобное.
Имеет смысл держать включенным автофильтр в правом списке. Если совпадение долго не находится визуально, то можно быстро применить фильтр в правом списке по подстроке из наименования из левого списка.
Всего много строк надо сравнивать? Т.е. каковы "масштабы бедствия"? Работа разовая, т.е. один раз найти связи и дальше много лет пользоваться? Если строк не очень много (скажем, до 1000), то этот способ самый простой, самый быстрый и, пожалуй, самый надежный.
[p.s.]Вот и макрос вспомнился - для модуля листа:[/p.s.] [vba]
Код
Option Explicit
Public gcount As Long 'последовательный счётчик меток совпадений
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not IsEmpty(Target) Then Exit Sub 'отметка строк ЛЕВОГО списка - в колонке C (3) If Target.Column = 3 Then gcount = gcount + 1 Target.Value = gcount End If 'отметка строк ПРАВОГО списка - в колонке F (6) If Target.Column = 6 Then Target.Value = gcount End If End Sub
[/vba]
Помещаем оба списка на один лист рядом, с зазором в 3-4 колонки. Сортируем каждый по отдельности по возрастанию наименований.
Выбираем первую строку из левого списка, в свободной колонке справа (от левого списка) ставим цифру "1". Визуально просматриваем правый список. Найдя совпадение справа, метим его в свободной колонке слева (от правого списка) также цифрой "1". Первое совпадение найдено - строки обоих списков связаны кодом "1".
Переходим к следующей строке слева, метим ее цифрой "2" и т.д. Можно написать несложный макрос, который по двойному клику мышкой будет сам проставлять очередную цифру сравнения (и соответственно сам их последовательно считать). Это, правда, несложно - когда-то сам писал нечто подобное.
Имеет смысл держать включенным автофильтр в правом списке. Если совпадение долго не находится визуально, то можно быстро применить фильтр в правом списке по подстроке из наименования из левого списка.
Всего много строк надо сравнивать? Т.е. каковы "масштабы бедствия"? Работа разовая, т.е. один раз найти связи и дальше много лет пользоваться? Если строк не очень много (скажем, до 1000), то этот способ самый простой, самый быстрый и, пожалуй, самый надежный.
[p.s.]Вот и макрос вспомнился - для модуля листа:[/p.s.] [vba]
Код
Option Explicit
Public gcount As Long 'последовательный счётчик меток совпадений
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) If Not IsEmpty(Target) Then Exit Sub 'отметка строк ЛЕВОГО списка - в колонке C (3) If Target.Column = 3 Then gcount = gcount + 1 Target.Value = gcount End If 'отметка строк ПРАВОГО списка - в колонке F (6) If Target.Column = 6 Then Target.Value = gcount End If End Sub
Gustav, благодарю вас, но масштаб бедствия прилично большой. От 2000 до 160 000, т.к. работа должна быть проведена с несколькими документами. Работа не разовая.
Gustav, благодарю вас, но масштаб бедствия прилично большой. От 2000 до 160 000, т.к. работа должна быть проведена с несколькими документами. Работа не разовая.Marandi
Сообщение отредактировал Marandi - Среда, 17.01.2024, 06:07
Доброго дня! Попробовал помочь, но выдает ошибку, она выделена желтым цветом по повторяющейся позиции. Посмотрите может поможет. Свел все в одну таблицу.
Доброго дня! Попробовал помочь, но выдает ошибку, она выделена желтым цветом по повторяющейся позиции. Посмотрите может поможет. Свел все в одну таблицу.alexa1965