Всем привет! с помощью макрорекодера и инета написал код, для ускорения поиска данных с одного листа на другом. Т.е. я выделяю кликом мышки ячейку с нужным данными и запускаю макрос - он мне находит на другом листе в определенном макросом столбце это значение. Есть одна проблема, которую совершенно не знаю как решить. В листе с которого беру данные, чтобы найти их на втором листе эти данные текстовые разной длины. Очень много значений в ячейках, которые заканчиваются на .........GE и три цифры на конце. Для примера 3AAA00GE100. Дак вот - очень хотелось бы, при выделении ячейки для запуска макроса поиска с таким (или аналогичным) значением в значение переменной, которую я потом вставляю в автофильтр не попадал последний символ.. т.е. вставлялось 3AAA00GE10? (потому как последняя цифра на листе, котором я ищу данные может отличаться от нуля) Код прилагаю
[vba]
Код
Sub Макрос1()
Dim ЗначениеАктивнойЯчейки As String ЗначениеАктивнойЯчейки = ActiveCell.Value Selection.Copy Sheets("для графиков").Select If ActiveSheet.AutoFilter.FilterMode Then ActiveSheet.ShowAllData ActiveSheet.Range("$A$1:$L$113333").AutoFilter Field:=6, Criteria1:= _ ЗначениеАктивнойЯчейки, Operator:=xlAnd
End Sub
[/vba]
Всем привет! с помощью макрорекодера и инета написал код, для ускорения поиска данных с одного листа на другом. Т.е. я выделяю кликом мышки ячейку с нужным данными и запускаю макрос - он мне находит на другом листе в определенном макросом столбце это значение. Есть одна проблема, которую совершенно не знаю как решить. В листе с которого беру данные, чтобы найти их на втором листе эти данные текстовые разной длины. Очень много значений в ячейках, которые заканчиваются на .........GE и три цифры на конце. Для примера 3AAA00GE100. Дак вот - очень хотелось бы, при выделении ячейки для запуска макроса поиска с таким (или аналогичным) значением в значение переменной, которую я потом вставляю в автофильтр не попадал последний символ.. т.е. вставлялось 3AAA00GE10? (потому как последняя цифра на листе, котором я ищу данные может отличаться от нуля) Код прилагаю
[vba]
Код
Sub Макрос1()
Dim ЗначениеАктивнойЯчейки As String ЗначениеАктивнойЯчейки = ActiveCell.Value Selection.Copy Sheets("для графиков").Select If ActiveSheet.AutoFilter.FilterMode Then ActiveSheet.ShowAllData ActiveSheet.Range("$A$1:$L$113333").AutoFilter Field:=6, Criteria1:= _ ЗначениеАктивнойЯчейки, Operator:=xlAnd
Уважаемый Karataev, прошу прощения -не полностью задачу пояснил. Новую строку, что вы добавили я понял. Но в моем случае автофильтр срабатывает и я ничего не нахожу. Я начал проверять на листе, котором данные ищу и обнаружил, что фильтр срабатывает на "равно", а хотелось бы на "содержит". И еще - вариант из переменной убирать одно значение в конце не подходить. У меня есть данные, где значение не имеют на конце GE??? - как сделать проверку? Т.е. если заканчивается значение ячейки на GE????, то тогда только убирать в конце один символ и запускать фильтр по "содержит". Если не заканчивается на GE???, то тогда ничего в конце убирать не надо при копировании
Уважаемый Karataev, прошу прощения -не полностью задачу пояснил. Новую строку, что вы добавили я понял. Но в моем случае автофильтр срабатывает и я ничего не нахожу. Я начал проверять на листе, котором данные ищу и обнаружил, что фильтр срабатывает на "равно", а хотелось бы на "содержит". И еще - вариант из переменной убирать одно значение в конце не подходить. У меня есть данные, где значение не имеют на конце GE??? - как сделать проверку? Т.е. если заканчивается значение ячейки на GE????, то тогда только убирать в конце один символ и запускать фильтр по "содержит". Если не заканчивается на GE???, то тогда ничего в конце убирать не надо при копированииovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Dim ЗначениеАктивнойЯчейки As String ЗначениеАктивнойЯчейки = ActiveCell.Value If InStr(ЗначениеАктивнойЯчейки, "GE") <> 0 Then ЗначениеАктивнойЯчейки = Left(ЗначениеАктивнойЯчейки, Len(ЗначениеАктивнойЯчейки) - 1) End If Selection.Copy Sheets("для графиков").Select If ActiveSheet.AutoFilter.FilterMode Then ActiveSheet.ShowAllData ActiveSheet.Range("$A$1:$L$113333").AutoFilter Field:=6, _ Criteria1:="=*" & ЗначениеАктивнойЯчейки & "*"
End Sub
[/vba]
[vba]
Код
Sub Макрос1()
Dim ЗначениеАктивнойЯчейки As String ЗначениеАктивнойЯчейки = ActiveCell.Value If InStr(ЗначениеАктивнойЯчейки, "GE") <> 0 Then ЗначениеАктивнойЯчейки = Left(ЗначениеАктивнойЯчейки, Len(ЗначениеАктивнойЯчейки) - 1) End If Selection.Copy Sheets("для графиков").Select If ActiveSheet.AutoFilter.FilterMode Then ActiveSheet.ShowAllData ActiveSheet.Range("$A$1:$L$113333").AutoFilter Field:=6, _ Criteria1:="=*" & ЗначениеАктивнойЯчейки & "*"
Что именно в ней позволяет искать по "содержит"? и где можно почерпнуть информацию о способах в VBA указывать критерии работы фильтра? Если конечно у Вас есть такая информация.
Karataev, Спасибо! То, что доктор прописал! А можно поподробнее, про последнюю строку кода.
Что именно в ней позволяет искать по "содержит"? и где можно почерпнуть информацию о способах в VBA указывать критерии работы фильтра? Если конечно у Вас есть такая информация.ovechkin1973
Плохо когда не знаешь, да еще забудешь. Правильно сформулированный вопрос содержит половину ответа.
Я взял критерий с помощью макрорекордера и изменил полученный код, вставив в него переменную. Звездочка в данном случае означает "отсутствие символов" или "любое количество любых символов".
PS. В посте 5 Вы использовали для оформления не тот тег (Вы использовали тег для формул).
Я взял критерий с помощью макрорекордера и изменил полученный код, вставив в него переменную. Звездочка в данном случае означает "отсутствие символов" или "любое количество любых символов".
PS. В посте 5 Вы использовали для оформления не тот тег (Вы использовали тег для формул).Karataev
Сообщение отредактировал Karataev - Воскресенье, 10.12.2017, 21:46