2015-06-04 78 views
0

我是VBA的新手,急需一些帮助。我有一个有两个工作表,即“网址”和“关键字”的Excel文件。我需要一个可以逐个选择关键字的宏,并将它们作为过滤器应用于“URL”工作表,以最终我们得到包含至少一个关键字的所有URL的列表。在VBA中使用多个过滤器|| excel 2010

举例来说,如果我申请使用的第一个关键词 “食谱” 的过滤器,我应该得到的,

  • “simplyrecipes.com”
  • “simplerecipewizard.com”

之后当我申请第二个关键字“net”时,我应该有

  • “simplyrecipes.com”
  • “simplerecipewizard.com”
  • “topix.net”
  • “stockinvestingbasics.net”
  • “techdailynews.net”
  • “theanimeplace.net”
  • “seniorhousingnet.com”
  • “wordcounter.net”等。

您可以在https://goo.gl/wRxNOe

日Thnx Satdeep下载Excel文件并不需要这个任务

+0

当时VBA选择或选择力?请上传迄今为止您尝试过的任何代码。 – bonCodigo

+0

由选择。正如我前面提到的,我仍然了解VBA。所有我管理到现在是输入数组中的所有关键字。我的思考过程是在URL表中逐个使用数组内容。 –

+0

[你可以即兴创作吗?](http://www.mrexcel.com/forum/excel-questions/549322-using-visual-basic-applications-find-if-any-keyword-exists-string.html) – bonCodigo

回答

0

过滤器:

Sub GatherData() 
' http://stackoverflow.com/questions/30641317/using-multiple-filters-in-vba-excel-2010 
    Dim s1 As Worksheet, s2 As Worksheet, v1 As String, v2 As String 
    Dim N1 As Long, N2 As Long, i As Long, j As Long, K As Long 
    Set s1 = Sheets("URLs") 
    Set s2 = Sheets("keywords") 

    N1 = s1.Cells(Rows.Count, 1).End(xlUp).Row 
    N2 = s2.Cells(Rows.Count, 1).End(xlUp).Row 
    K = 1 

    For j = 1 To N2 
     v2 = s2.Cells(j, 1).Value 
     For i = 2 To N1 
     v1 = s1.Cells(i, 1).Value 
     If InStr(v1, v2) > 0 Then 
      s1.Cells(i, 1).Copy s2.Cells(K, 2) 
      K = K + 1 
     End If 
     Next i 
    Next j 
End Sub 
+0

它的工作原理,但我不想在另一张表中返回这些值。我想要的是过滤出来的结果,以便我可以删除它们 –

+0

@satdeepsingh然后让我们等待另一个答案。 –

+0

上面提供的宏在比较时区分大小写。任何想法为什么? –

0

之所以能够围绕找到工作。添加了两个宏,并在Gary的Student上面提供的第一个宏中调用它们。

下面是使用两个宏:

Worksheets("URLs").Activate 
Range("B2").Activate 
ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1],Result!C1,1,0)" 
Range("B2").Select 
Selection.AutoFill Destination:=Range("B2:B2716") 
Range("B2:B2716").Select 
Range("B1").Select 
Selection.AutoFilter 
ActiveSheet.Range("$A$1:$B$2716").AutoFilter Field:=2, Criteria1:= _ 
    "=#VALUE!", Operator:=xlOr, Criteria2:="=#N/A" 
Range("A1:B2716").Select 
Range("B1").Activate 
Selection.Copy 
Sheets("Approved List").Select 
Range("A1").Select 
ActiveSheet.Paste 
Columns("B:B").Select 
Application.CutCopyMode = False 
Selection.Delete Shift:=xlToLeft 

Sheets("URLs").Select 
Columns("B:B").Select 
Selection.Delete Shift:=xlToLeft 
Range("A3").Select 
Selection.AutoFilter 
Selection.End(xlUp).Select 
Sheets("Approved List").Select 

谢谢大家帮助我在这里