excel查找 代码

我在一个excel工作表中,有差不多400行数据,其中在F列的数据中,有的单元格包含有“建议”2个字,我现在在工作表内设置了一个控件按钮,想设置一段代码,实现点击按钮后,就将工作表内F列包含“建议”的行提出来,然后隐藏不包含“建议”字段的其他行。该操作类似excel的筛选功能,但使用筛选的话,会在指定行留下一个筛选的箭头,这个是我不想要的。
我想实现从工作表第4行到使用的最后一行之间进行查找。

求代码!

第一步,准备数据表
一共需要两个工作表,有原始数据的工作表起名为“1”,检索用的表起名为“2”。

从格式上说,这两个表是相同的,所不同的只是在第一行。
提示:原始数据表格的内容不一定和本例完全一样,只要检索表与原始数据表的格式一样就行了。
表格做好后,就可以编辑VBA代码了。

第二步,制做VBA代码
选中“2”表,在下面标签名上点鼠标右键,选“查看代码”,调出这个表2的VBA窗口
把代码粘贴进去


代码如下:
Dim aa As String '字符型
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.ScreenUpdating = False '禁止屏幕更新
b = [c65536].End(xlUp).Row
If b < 3 Then b = 3
Sheets("2").Range(Cells(3, 1), Cells(b, 11)).ClearContents '先清除查询区域
s = Sheets("1").Range("j1") '数量(使用COUNTA确定数据记录行数)
aa = Range("b1") '要查询的号码(完整或前几位)
x1 = 3 '从第三行开始
For x = 3 To s + 3
n = Len(aa)
w = Sheets("1").Cells(x, 3) '从表1中取一个C列号码赋值给变量w
If Len(w) >= n And Left(w, n) = aa Then '判断这个号码是否与要检索的相符
For j = 1 To 10
Cells(x1, j) = Sheets("1").Cells(x, j) '将相符号码的相关内容提取出来
Next j
x1 = x1 + 1
End If
Next
Range("b1").Select
Application.ScreenUpdating = True '允许屏幕更新
End Sub
在代码中已经做了注释,有VBA基础的朋友很容易理解。

第三步,完成验收
最后就可以检验效果了,在表2的B1单元格中输入“860”回车后,就把所有前三个数字相符的电话号码检索出来了。
同样,在B1格中输入数字“8”,就能把所有第一位是8的电话号码检索出来。


这个示例表格完成了一个简单的检索,为了介绍方便,只做了对一列数据的检索,有兴趣的朋友可以在此基础上增加多列检索,实用性就更强了。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-15
隐藏或删除行有个共识,要从下到上这样来循环,一楼的稍作修改即可
Sub 宏1()
Dim i%
For i = Range("f4").End(xldown).Row To 4 Step -1 ‘to 4可改成to 5,改到to 5即第四行不参加判断
'上面这句可改成 :For i = Range("f65536").End(3).Row To 5 Step -1
If Not Cells(i, 6) Like "*" & "建议" & "*" Then
Rows(i).Hidden = True
End If
Next i
End Sub本回答被提问者和网友采纳
第2个回答  2012-12-14
Sub 宏1()
For i = 4 To 450
If Cells(i, 6) <> "建议" Then
Rows(i).Select
Selection.EntireRow.Hidden = True
End If
Next i
End Sub
第3个回答  2012-12-14
这个可以有!发来看看!693684292
相似回答