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