2015-11-27 2 views
0

У меня есть файл журнала, который я импортировал в Excel, и я отфильтровал Col C на основе критериев. Теперь я хочу выполнить поиск через Col E для «TRUE». Для каждого экземпляра «ИСТИНА» я хочу выбрать строки над ним для Col D, E, пока не найду пустую ячейку в Col E, скопируйте их и вставьте в новый рабочий лист в той же книге.Найти текст и скопировать на другой лист

enter image description here

В соответствии с приведенной выше картинке, я хочу скопировать строк 9 к 1 в worksheet1 и Пропустить Копирование строк от 20 до 10 (Поскольку Col Е имеет значение FALSE) и скопировать на строки 31 до 21 в worksheet2.

+0

Добрый день, Добро пожаловать в StackOverflow. Пожалуйста, вы можете вставить свой текущий код для того, что вы хотите сделать, это поможет пользователям посмотреть, где вам можно помочь. Как правило, этот сайт не предназначен для того, чтобы пользователи просили кого-то разработать для них некоторый код. –

+0

Если вам нужна помощь в разработке кода для вашей идеи. Затем начните с 'Loop', чтобы запустить мысли столбцов, и' If' вы найдете то, что ищете, и запустите другой цикл Loop для поиска требуемого текста. Затем назначьте этот диапазон и скопируйте его на новый лист. –

+1

Не возражаете поделиться с нами своей первой попыткой макроса, чтобы мы могли помочь вам в этом. BTW, что вы пытаетесь сделать, легко может быть сделано с помощью формулы в столбце E, затем AutoFilter и скопировать видимые ячейки в целевой лист ... – EEM

ответ

1

Вы можете использовать .areas

Это жесткая один, если у вас нет опыта VBA и не знаю, что искать. Вот начало, на основе фотографии, которую вы поставили, я придумал это.

Sub DoIt() 
    Dim sh As Worksheet, ws As Worksheet 
    Dim RangeArea As Range, c As Range 

    Set sh = ActiveSheet 
    Application.ScreenUpdating = 0 

    With sh 
     For Each RangeArea In .Columns("E").SpecialCells(xlCellTypeConstants, 23).Areas 
      Set c = RangeArea.Find(what:="TRUE", lookat:=xlWhole) 
      If Not c Is Nothing Then 
       RangeArea.EntireRow.Copy 
       Sheets.Add 
       ActiveSheet.Paste 
      Else 
      End If 
      .Select 
     Next RangeArea 
    End With 
    Application.CutCopyMode = 0 
End Sub 
+0

Спасибо за ответ. оно работает! – Diana

Смежные вопросы