2012-05-10 2 views
0

Я относительно новичок в excel vba, но я ищу несколько советов о создании макроса, который я могу запустить по нескольким листам в книге.Поиск значений в нескольких столбцах с помощью VBA

Совет, который я ищу, - это взять 3 столбца, где я могу найти определенные значения в этих столбцах. Если строка имеет значение в каждом из трех столбцов, которые удовлетворяются, чтобы сохранить эти строки вместе со всеми заголовками столбцов в новый рабочий лист в той же книге. Итак, если у меня есть 10 рабочих листов в моей книге и запустите макрос, мне нужно закончить 20 рабочих листов.

Может ли кто-нибудь мне помочь?

+0

Вы можете начать экспериментировать с .Find :) См. Эту ссылку. http://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/ Как только вы получите эту часть, начните запись макроса, чтобы переместить значения между листами, а затем объедините два кода:) Попробуйте, а затем, если вы застряли, просто отправьте обратно ... –

ответ

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. Вышеприведенный код должен много помочь со структурой и, возможно, синтаксисом. Тем не менее, сделайте попытку сделать то, что вы хотите, и если вы застряли, отправьте свои усилия назад, и мы сможем помочь вам расклеиться. –

Смежные вопросы