Копирование строк на другой лист на основе поиска по сетке тегов - PullRequest
0 голосов
/ 03 августа 2011

У меня проблема с Excel, с которой я надеялся, что кто-то может мне помочь.

У меня есть таблица, в которой между столбцами K & Q указан ряд тегов. Я хотел бы иметь функцию, макрос или что-то, что позволит мне просматривать все эти теги и копировать любые строки, содержащие определенное слово, на другой лист.

, например

       I           J        K          L         M           N              O     etc. 
1      blah        blah     funding    blah      blah        blah           blah
2      funding     blah     blah       blah      blah        blah           blah
3      blah        blah     blah       blah      blah        blah           blah
4      blah        blah     blah       blah      blah        blah           blah
5      blah        blah     blah       blah      blah        funding        blah
6      blah        blah     funding    blah      blah        blah           blah

В столбцах A - H есть другая информация, которую мне также нужно будет скопировать, но я не хочу включать в поиск. Поэтому в этом сценарии я хотел бы иметь возможность искать тег «финансирование» и, следовательно, копировать строки 1, 2, 5 и 6 на другой лист.

Возможно ли это?

Ответы [ 2 ]

3 голосов
/ 03 августа 2011

Вот код.Я отдаю должное tompols с этого форума (я основал свой код на этом): http://en.kioskea.net/forum/affich-242360-copy-row-if-a-range-of-column-matches-a-value

ОБНОВЛЕНИЕ : код переписан, чтобы быть более эффективным с некоторыми фантастическими пунктами из Жан-Франсуа Корбетт реализован (спасибо!).В конце я также добавил окно сообщения, в котором сообщалось, сколько строк было скопировано.

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

Sub customcopy()

Application.ScreenUpdating = False
Dim lastLine As Long
Dim findWhat As String
Dim toCopy As Boolean
Dim cell As Range
Dim i As Long
Dim j As Long

findWhat = CStr(InputBox("Enter the word to search for"))
lastLine = ActiveSheet.UsedRange.Rows.Count

j = 1
For i = 1 To lastLine
    For Each cell In Range("K1:Q1").Offset(i - 1, 0)
        If InStr(cell.Text, findWhat) <> 0 Then
            toCopy = True
        End If
    Next
    If toCopy = True Then
        Rows(i).Copy Destination:=Sheets(2).Rows(j)
        j = j + 1
    End If
    toCopy = False
Next

i = MsgBox(((j - 1) & " row(s) were copied!"), vbOKOnly, "Result")

Application.ScreenUpdating = True
End Sub

Принятие ответов (я заметил, что вы новичок здесь): Если это работает для вас, пожалуйста, нажмите стрелку, которая появляется в верхнейосталось принять этот ответ.Спасибо!

2 голосов
/ 03 августа 2011

вы можете попробовать записать макрос , выполнив следующие шаги:

  1. выберите столбцы, в которых вы хотите искать (K и Q, если я правильно понял)
  2. выполнить поиск по метке-образцу
  3. скопировать найденную строку
  4. вставить ее на другой лист

, после чего вы получитепервый пример кода для начала.

см. здесь , где приведены советы по очистке кода

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...