2013-02-12 89 views
0

我不得不问,如何搜索值和!删除型动物Excel搜索并删除不包含搜索值的不同特定单元

如果我有从片column A B C和单元格A1这样下面的数据(2)有“BBB”

什么功能或VBA我应该使用在列A和B除掉细胞的上一行不包含BBB

尝试使用宏记录,但它不会很好地工作

 A     B      C 

aaa-1.1.1.1   aa1a1a1a1a1    remark 

bbb-2.5.2.2   b2b2b2b2b2b2    remark 

ccc-3.3.3.3   c3c3c3c3c3c3    remark 

bbb-1.2.2.5   b2b2b2b2b2b2    remark 

ddd-4.1.2.4   d4d4d4d4d4d4    remark 

bbb-1.3.2.7   b2b2b2b2b2b2    remark 

bbb-2.2.2.2   b2b2b2b2b2b2    remark 

结果应该是像

A     B      C 
               remark 

bbb-2.5.2.2   b2b2b2b2b2b2    remark 

               remark 

bbb-1.2.2.5   b2b2b2b2b2b2    remark 

               remark 

bbb-1.3.2.7   b2b2b2b2b2b2    remark 

bbb-2.2.2.2   b2b2b2b2b2b2    remark 

感谢您的每一个帮助我能:)

+1

尝试使用自动筛选,然后修改代码录制宏?请参阅这里使用Autofilter http://stackoverflow.com/questions/10050946/selecting-columns-that-have-values-in-excel-macro-range-object-in-vba和这里http://stackoverflow.com/questions/11631363/how-to-copy-a-line-in-excel-using-a-specific-word-and-pasting-to-another-excel -s – 2013-02-12 04:33:46

回答

1

使用VBA

以下时,它得到一个空行,将停止......

x = 1 
While Cells(x, 1) <> "" 
    If Left(Cells(x, 1), 3) <> "bbb" Then 
     Cells(x, 1) = "" 
     Cells(x, 2) = "" 
    End If 
    x = x + 1 
Wend 
+1

如果你有大数据集,那么循环被认为是非常慢与自动过滤器相比:) – 2013-02-12 04:45:06

+1

@Siddharth出于好奇,你知道自动过滤器有多快吗? - 由于OP没有具体说明数据量,所以这是一个非常简单的问题解决方案。 +1。 – Sam 2013-02-12 16:26:14

+1

@Sam:这是一个有效的问题。如果你有一个小的数据集,那么速度可以忽略不计,但是如果你有像我上面提到的那样的大数据集,说10K行,那么你会循环10K次,而自动过滤器会更快。如果你知道如何在Excel中使用计时器,那么你实际上可以计时:) – 2013-02-12 18:33:40

1

如果你不看为自动化解决方案(例如这是一个完成的场景,不需要编程或记录),你可以简单地使用基于Column A的值的数据,然后删除过程是微不足道的。总之:

  1. 突出显示有问题的所有行/列
  2. 右键 - >排序 - >排序从A到Z
  3. 选中所有行的上方和下方包含bbb行。这可以通过在进行选择时持有CTRL来完成。
  4. 按下删除

这里的 enter image description here

选择行上面和下面的这些步骤一些屏幕截图,结果

排序数据bbb enter image description here

Delete(结果) enter image description here