2012-05-10 19 views
0

我對excel vba相對較新,但我正在尋找一些關於創建一個可以在工作簿中的許多工作表上運行的宏的建議。使用VBA在許多列中查找值

我正在尋找的建議是採取3列,我可以找到這些列中的某些值。如果行中的每個列中都有值,則會將這些行以及所有列標題保存到同一工作簿中的新工作表中。因此,如果我的工作簿中有10個工作表並運行宏,則需要20個工作表。

任何人都可以幫助我嗎?

+0

你可以開始嘗試.Find :)看到這個鏈接。 http://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/一旦你得到那部分權利開始錄製一個宏來移動表單之間的值,然後結合2代碼: )試一試,然後,如果你卡住了,只是回來後...... –

回答

0

既然你是VBA的新手,我給你一些代碼。主知道我在新的時候有很多幫助。看一下這個。我不確定你將如何傳遞哪些價值觀,但這應該給你一個很好的開始。

Sub find3_makesheet() 

Dim strValue As String 
Dim wks As Worksheet 
Dim rng1 As Range, rng2 As Range, rng3 As Range 

strValue = "myValue" 

For Each wks In Worksheets 

    With wks 

     If Not .Columns(1).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng1 = .Columns(1).Find(strValue, lookat:=xlWhole) 
     If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng2 = .Columns(2).Find(strValue, lookat:=xlWhole) 
     If Not .Columns(2).Find(strValue, lookat:=xlWhole) Is Nothing Then Set rng3 = .Columns(2).Find(strValue, lookat:=xlWhole) 

     If Not rng1 Is Nothing And Not rng2 Is Nothing And Not rng3 Is Nothing Then 
      ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count) 
      Set wksCopyTo = ActiveSheet 
      .Rows(1).EntireRow.Copy wksCopyTo.Rows(1) 
      rng1.EntireRow.Copy wksCopyTo.Rows(2) 
      rng2.EntireRow.Copy wksCopyTo.Rows(3) 
      rng3.EntireRow.Copy wksCopyTo.Rows(4) 
     End If 

    End With 

    Set rng1 = Nothing 
    Set rng2 = Nothing 
    Set rng3 = Nothing 
Next 

End Sub 
+0

解決方案是有幫助的,但我需要幫助調整它,因爲我不是在尋找列單獨但是完全 – Andy5

+0

嗯......我會做的第一件事是用英語向你自己解釋你想做什麼 - >我知道這似乎有點多餘,但用英文寫出代碼(類似於我以前的做法)是很有價值的。然後做一些搜索,找出如何在VBA中做到這一點。上面的代碼應該對結構和語法有很大的幫助。也就是說,試圖做你想做的事情,如果你被困住了,就把你的努力放回去,我們可以幫你解決問題。 –