2012-05-10 6 views
0

私はvbaの方が比較的新しいですが、ブック内のいくつかのワークシートで実行できるマクロの作成に関するアドバイスを探しています。VBAを使用して複数の列の値を検索する

私が探している助言は、私がそれらの列で特定の値を見つけることができる3列を取ることです。行には、これらの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でそれを行う方法を見つけるためにいくつかの検索を行います。上記のコードは、構造や多分構文に多大な助けとなるはずです。それは、あなたがしたいことをしようとし、あなたが立ち往生した場合は、あなたの努力をポストし、私たちはあなたが立ち退かせるのを助けることができると言った。 –

関連する問題