Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.08.2013, 06:52   #1
ma7ter
Новичок
Джуниор
 
Регистрация: 26.08.2013
Сообщений: 1
По умолчанию Копирование строк при нахождении нужного слова

Добрый день уважаемые участники форума.
Столкнулся с проблемой - с которой вот уже несколько дней не могу справиться. Надежда как всегда на вас...


Задача - скопировать все строки в таблице эксель, которые содержат в каком либо из столбцов нужное слово, к примеру "слон":

Возможно поможет:
Я нашел на одном из сайтов следующий код для удаления строк которые содержат слово, но как сделать так, что бы они копировались (к примеру в буфер обмена), либо на другой лист??? Также было бы здорово если бы все строки, которые не содержали нужного слова удалялись.


Заранее большое спасибо, надеюсь на вашу помощь.

PHP код:
Sub УдалениеСтрокПоУсловию()
    
Dim ra As Rangedelra As RangeТекстДляПоиска As String
    Application
.ScreenUpdating False    ' отключаем обновление экрана

    ТекстДляПоиска = "Наименование ценности"    ' 
удаляем строки с таким текстом

    
' перебираем все строки в используемом диапазоне листа
   For Each ra In ActiveSheet.UsedRange.Rows
        ' 
если в строке найден искомый текст
       
If Not ra.Find(ТекстДляПоиска, , xlValuesxlPartIs Nothing Then
            
' добавляем строку в диапазон для удаления
           If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
        End If
    Next
    ' 
если подходящие строки найдены удаляем их
   
If Not delra Is Nothing Then delra.EntireRow.Delete
End Sub 
ma7ter вне форума Ответить с цитированием
Старый 26.08.2013, 08:51   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Предлагаю иной способ решения Вашей задачи:
Код:
Sub Main()
    Dim i As Long, j As Long, k As Long, FindStr As String, a(), b(), c, d()
    Application.ScreenUpdating = False: Application.DisplayAlerts = False
    On Error Resume Next: Sheets("Итог").Delete: On Error GoTo 0
    a = ActiveSheet.UsedRange.Value
    FindStr = "слон" 'строка для поиска
    ReDim d(1 To UBound(a, 1), 1 To UBound(a, 2)): j = 0
    For i = 1 To UBound(a, 1)
        b = Application.Index(a, i, 0): c = Filter(b, FindStr, True)
        If UBound(c) <> -1 Then
            j = j + 1
            For k = 1 To UBound(a, 2): d(j, k) = a(i, k): Next
        End If
    Next
    If j > 0 Then
        Sheets.Add.Name = "Итог": [A1].Resize(UBound(d, 1), UBound(d, 2)).Value = d
    End If
End Sub
Пример во вложении. Откройте файл и запустите макрос "Main".
Вложения
Тип файла: rar Книга1.rar (7.3 Кб, 31 просмотров)
Чем шире угол зрения, тем он тупее.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Эксель 2010 зависает при копирование строк Nesterov Microsoft Office Excel 1 03.04.2013 07:06
при нахождении в тексте букв к аналогичному букве значению прибавлялось +1 masterlightsmoke Общие вопросы C/C++ 4 06.12.2011 11:30
Как сделать поиск нужного слова в TextBox 3dgraph Общие вопросы .NET 2 30.06.2009 10:55
Перевод на новую строку после нужного слова Лёшка228 Общие вопросы Delphi 2 09.06.2009 20:32
при нахождении символа перенос на новую строку MixanM Общие вопросы Delphi 11 09.06.2009 09:15