Печатать строки на основе критериев?

Я немного новичок, чтобы преуспеть, но до сих пор я освоил некоторые формулы. Я создал формулу для поиска определенных критериев в столбцах. Однако то, что я хочу сделать, основано на том, что я искал с помощью счетчиков, я хочу отобразить строки, которые искали, на отдельном листе. Например, если я выполнил поиск в столбце A и обнаружил, что в 3 строках столбца A содержится слово "Hello", я бы хотел распечатать строки, содержащие слово "Hello" в столбце A. Есть ли простой или автоматизированный способ сделать это? Я не хотел бы делать это вручную через фильтры. Если бы кто-то мог помочь, это было бы здорово! Спасибо!

Пример строк и столбцов будет выглядеть так:

Animal    Owner    Phrase
Cat       Jack     Hello
Dog       Jill     Bye
Elephant  Henry    Hello

В этом случае я бы использовал Countifs для поиска "Hello", который отображал бы строки на отдельном листе.

Cat       Jack     Hello
Elephant  Henry    Hello

Если у кого-то есть какие-либо предложения о том, как это сделать, это будет с благодарностью. Спасибо!

2 ответа

ОК, если вы хотите сделать это в VBA:

Sub SortByCondition()

Application.ScreenUpdating = False

Dim i As Integer, r As Integer
Dim rFirst As Integer, rLast As Integer
Dim wSin As Worksheet, wSout As Worksheet ' I like to have variables when working on multiple sheets for clarity and ease of use

Set wSin = Sheets("Raw") ' The sheet where you have unsorted data
Set wSout = Sheets("Sorted") ' The sheet where you will copy the sorted data

' This is to find the first and last row in your table... there are many other ways to do it
With wSin.Cells(1, 1).CurrentRegion  ' Replace with first cell in your table
    rFirst = .Rows.Row + 1  ' Assumes the first line of your table is the header
    rLast = .Rows.Count + .Rows.Row - 1
End With

r = 2 ' We'll start copy on row 2 in the output sheet

For i = rFirst To rLast Step 1

    If wSin.Cells(i, 3).Value = "Hello" Then  ' I'm assuming we test for 'Hello' being in column C

        Range(wSin.Cells(i, 1), wSin.Cells(i, 3)).Copy wSout.Cells(r, 1)   ' We'll copy in columns A to C in the output sheet
        r = r + 1

    End If

Next i


Application.ScreenUpdating = True

End Sub

Почему бы не использовать встроенные фильтры в Excel и отображать только те строки, которые соответствуют определенным критериям (либо столбцы, в которых у вас есть счетчик> X, либо по каждому столбцу), а затем распечатать это?

"Домашняя" лента, панель "Редактирование, сортировка и фильтрация"

Другие вопросы по тегам