2011-03-18 116 views
0

我有一个庞大的数据集,我想提取没有特定关键字的行。提取特定行的Excel公式

例如,让说,我有以下的数据集(两列):

+--------------+------------------+ 
| Nylon  | Nylon wire  | 
| Cable  | 5mm metal cable | 
| Epoxy  | some comment | 
| Polyester | some comment | 
+--------------+------------------+ 

我想找到不包含关键字尼龙和环氧树脂(等关键词为此事)的行并将这些行放在另一个地方(即工作表)。

提前致谢!

回答

1
Sub a() 
    With Worksheets(1) 
    j = 1 
    For i = 1 To .UsedRange.Rows.Count 
     If .Rows(i).Find(what:="Nylon") Is Nothing And .Rows(i).Find(what:="Epoxy") Is Nothing Then 
     .Rows(i).Copy Destination:=Worksheets(2).Rows(j) 
     j = j + 1 
     End If 
    Next i 
    End With 
End Sub 
0
 
    A     | B     | C 
    -------------------- ------------------- --------  
1 Search Term ->  | nylon   | 
2 Name    | Description  | Found 
3 Nylon    | Nylon Wire  | TRUE 
4 Cable    | 5 mm metal cable | FALSE 
5 Exoxy    | some comment  | FALSE 
6 Polyester   | some comment  | FALSE 

在上面的例子中,我将创建A2自动筛选:C6与第一排是我的头。在C3每个单元格:C6我想有一个公式类似于(这是从C3):

=OR(NOT(ISERROR(SEARCH($B$1,A3))),NOT(ISERROR(SEARCH($B$1,B3)))) 

现在,你可以使用自动筛选工具来过滤那些发现是真的。

0

我会告诉你如何检查一个字符串是否在其他列内,返回一个布尔值。然后,您需要决定如何处理积极案例。我相信你会使用VLOOKUP或类似的东西。

请替换;通过,。我没有使用英文区域设置ATM。

您可以结合FIND和ISERROR函数来查找结果。 ISERROR返回一个布尔值,并且可以根据需要组合多个列检查。

例子:

比方说,你在小区C1和D1的测试中的关键字,你上面提供的范围在A2开始。

现在,我们可以在C2中添加一个测试来检查字符串尼龙是否存在于A2内,即= ISERROR(FIND(C1;$A$2))。我们还需要检查字符串Nylon是否存在于B2中,然后我们添加第二个条件:AND(ISERROR(FIND(C1;$A$2));ISERROR(FIND(C1;$B$2)))

由于我们测试FIND函数是否返回错误,它意味着函数将返回false已被发现。为了更容易理解,我相信这是更好地为我们配方中添加NOT条件,则情况下,C1的字符串出现在A2和B2,我们的函数将返回TRUE:

=NOT(AND(ISERROR(FIND(C1;$A$2));ISERROR(FIND(C1;$B$2)))) 

然后,我们复制这个公式一个单元格向右测试D1值,Epoxy。

现在,这结果结构:

          Nylon  Epoxy 
Nylon   |  Nylon wire  | TRUE | FALSE 
Cable   |  5mm metal cable | FALSE | FALSE 
Epoxy   |  some comment  | FALSE | TRUE 
Polyester  |  some comment  | FALSE | FALSE