Страницы: 1
RSS
VBA. Сравнение и удаление данных с двух листов и переносом результата на 3 лист
 
Доброго времени суток. Excel16. Требуется макрос для ускорения работы. Ниже опишу что хочется видеть в идеале, но если это вдруг не возможно, то готов выслушать альтернативные решения. Так же уточню, на листах представлена не полная видимость ячеек данных. На самом деле их там будет десятки тысяч, то есть если будут какие либо выделения ячеек, то их следует учитывать сразу с A1 до A50000.

Есть 3 листа как вы видите на прикрепленных скринах.  
Лист1 - данные с которыми надо будет сравнивать (редактирования с помощью макроса, удаление повторяющихся значений Листа2)
Лист2 - данные  для сравнения (их надо будет сравнить с данными  Листа1)
Лист3 - Итог. Хочется чтобы тут появились данные после сравнения листов, чтобы я просто копирнул получившийся результат и дальше с ним продолжил работать.

Важно еще то, что Лист2 имеет значения без букв (только цифры), тогда как на Лист1 присутствует буква "s" между цифрами. Нужно чтобы сравнение шло невзирая на буквы, то есть мне  нужно  не точное совпадение, а лишь частичное.

Пример сравнения значений, которые уйдут на удаление. То есть если число совпадает полностью до буквы "s", то удаляем его.
Лист1 - 12345s0000
Лист2 - 12345
Пример, как не нужно удалять (на всякий уточню) Подобное удалять не надо, ну думаю суть понятна.
Лист1 - 12345s0000
Лист2 - 1234

У меня на самом деле есть какой то исходник, но так как я не понимаю во всем этом, мне требуется помощь в его редактировании, если такое требуется.
Собственно сам макрос (писал не я, взят с другого источника. Комментарии того кто писал сохранены, но по ним я все равно не смог разобраться к сожалению)
Код
Sub Del_SubStr()
    Dim sSubStr As String 'искомое слово или фраза(может быть указанием на ячейку)
    Dim lCol As Long 'номер столбца с просматриваемыми значениями
    Dim lLastRow As Long, li As Long
    Dim arr
 
    sSubStr = InputBox("Укажите значение, которое необходимо найти в строке", "Запрос параметра", "")
    lCol = Val(InputBox("Укажите номер столбца, в котором искать указанное значение", "Запрос параметра", 1))
    If lCol = 0 Then Exit Sub
 
    lLastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count
    arr = Cells(1, lCol).Resize(lLastRow).Value
 
    Application.ScreenUpdating = 0
    Dim rr As Range
    For li = 1 To lLastRow
        If CStr(arr(li, 1)) = sSubStr Then
            If rr Is Nothing Then
                Set rr = Cells(li, 1)
            Else
                Set rr = Union(rr, Cells(li, 1))
            End If
        End If
    Next li
    If Not rr Is Nothing Then rr.EntireRow.Delete
    Application.ScreenUpdating = 1
End Sub

Скрытый текст
Изменено: Dezepancha - 11.08.2018 23:47:49 (исправил скрины по порядку)
 
Dezepancha, нужны не срины. Приложите урезанный пример файла с теми макросами, которые есть. Постарайтесь, чтобы пример был корректен.
И, скорее всего, в каком виде эта задача для раздела "Работа".
 
А мне скрин третьего листа понравился - очень информативно.
Цитата
Dezepancha написал:
мне требуется помощь в его редактировании, если такое требуется.
А Вы сами не можете посмотреть, требуется редактирование или нет? Если результат получается нужный, то не требуется. Иначе требуется.
 
Пока суд да дело - можно начать с "текст по столбцам" по s, далее ВПР() или СЧЁТЕСЛИ) и мануально что угодно.
 
Цитата
Юрий М написал:
А мне скрин третьего листа понравился - очень информативно.
Это я показал куда надо будет отправить получившийся результат. Я сразу объяснил что я не понимаю в этом совсем. Я мог бы разобраться кое как в самом екселе (формулы там простые и прочее), но разобраться в vba я к сожалению не могу, или могу, но времени уйдет слишком большое количество.

Цитата
Hugo написал:
Пока суд да дело - можно начать с "текст по столбцам" по s, далее ВПР() или СЧЁТЕСЛИ) и мануально что угодно.
Пока мне не требуется работа с этими данными. Нужно будет в середине недели и в больших количествах, по-этому с помощью макроса будет все намного быстрее и удобнее. Хочется тратить на это максимальное небольшое количество времени.
 
Если работа не разовая/редкая, и если данных очень много - тогда конечно нужен макрос. Но чтоб его писать/отлаживать, нужны файлы. Не по картинкам ведь...
 
Цитата
Dezepancha написал:
Это я показал куда надо будет отправить получившийся результат
И для этого нужен скрин пустого листа? Можно же было просто написать: результат выгрузить на Лист3 в столбец А.
Вам уже дважды сказали: нужен файл-пример. Не с картинки же помогающим срисовывать Ваши данные в таблицу.
 
Все, я уже сам разобрался, пока вы мне тут говорили что пустые листы скринить плохо. Закройте тему
 
Разобрались? - хорошо. С другими поделиться не хотите?
По поводу скринов пустых листов: если бы Вам нужно было выводить различные результаты на три листа - Вы бы показали скрины всех трёх пустых листов? Понимаете, о чём я?
Страницы: 1
Наверх