2013-07-02 46 views
0

我對excel有點新,但到目前爲止我已經掌握了一些公式。我所做的是創建一個countifs公式來搜索列中的某些標準。但是,我想要做的是基於我使用countifs搜索的內容,我想要在單獨的工作表中顯示countifs搜索的行。例如,如果我通過A列搜索並發現列A中的3行中有單詞「Hello」,我想打印出列A中包含單詞「Hello」的行。有沒有簡單的或自動的方式來做到這一點?我不想通過過濾器手動執行此操作。如果任何人都能幫上忙,那會很棒!謝謝!根據條件打印行嗎?

行和列的一個實例是這樣的:

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

在這種情況下我會使用COUNTIFS尋找「你好」,這將顯示在一個單獨的片的行。

Cat  Jack  Hello 
Elephant Henry Hello 

如果任何人有任何建議如何這樣做,那將不勝感激。謝謝!

+1

開始的最好的辦法是打開宏錄製和然後手動做你想要的代碼,然後關閉錄音機,並使用錄製的代碼作爲你的出發點 –

+0

聽起來像一個VBA函數可能是最好的方法,你可以發佈一個小樣本的數據(a幾行應該做),並描述你想要打印的輸出相對於你的數據中的列和匹配搜索標準的行RIA? – ChrisProsser

+0

行很長。我只是在列中查找某些關鍵詞,然後我的標識跟蹤它們。我想用與原始頁面相同的所有列標題將它們打印出來,但我只想將它們「拉出來」,然後將它們放入單獨的excel文件中,所有列標題都相同。 – user1871869

回答

0

爲什麼不在excel中使用內置過濾器,並只顯示符合特定條件的行(或者您的countif的列大於X或每列)然後打印?

「家」絲帶,面板上的「編輯,排序&篩選

+0

我想讓這個過程自動化。我目前正在編寫Visual Basic代碼來執行此操作。儘管感謝您的建議。 – user1871869

+0

數據透視表就是你正在尋找的東西。或者使用INDEX和SMALL的數組公式。如果你真的想在VBA中使用它(會變慢),那麼只需循環遍歷表中的每一行,並將該行復制到上一行下面的新表中,如果它符合條件的話。讓我知道你是否需要一段代碼來做到這一點。 –

+0

當然,如果可能的話,我將不勝感激一些代碼或大綱。我只想知道如何解決這個問題。謝謝! – user1871869

0

OK,如果你想這樣做在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 
+0

嘿感謝您的及時迴應!我只是有一個更快的問題。我意識到一個數據透視表可能更容易維護,因爲我可能需要添加/更改行。我只是有一個簡單的問題 - 我想把日期和字符串放在數據透視表的數據過濾器中 - 這可能嗎?我注意到我只能在那裏得到數字 – user1871869