在EXCEL中 如何用VBA查找某特定单元格并返回该单元格的行和列值?
作者&投稿:汲维 (若有异议请与网页底部的电邮联系)
sub a() dim rng as range,rngSearch as range dim vl as string set rng=range("A1:B100") vl="AAA" set rngSearch=rng.find(what:=vl) if not rngSearch is nothing then msgbox vl.columnend sub
给你个列子 在 C列找 包含 “宁波” 的单元格 ,如果 是完全匹配 XLPART 改成XLWHOLE
Sub 查找()
Set findcell = Columns("c").Find("宁波", LookAt:=xlPart)
If Not findcell Is Nothing Then
MsgBox findcell.Row
Else
MsgBox "没找到符合条件的单元格"
End If
End Sub
RngFind过程使用Find方法在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值,并查找该值所在的第一个单元格。
第6到第13行代码在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值。应用于Range对象的Find方法在区域中查找特定信息,并返回Range对象,该对象代表用于查找信息的第一个单元格。如果未发现匹配单元格,就返回Nothing,语法如下:
expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)
参数expression是必需的,该表达式返回一个Range对象。
参数What是必需的,要搜索的数据,可为字符串或任意数据类型。
参数After是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。查找时是从该单元格之后开始的,直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。
在本例中将After参数设置为A列的最后一个单元格,所以查找时从A1单元格开始搜索。
参数LookIn是可选的,信息类型。
参数LookAt是可选的,可为XlLookAt常量的xlWhole 或xlPart之一。
参数SearchOrder是可选的,可为XlSearchOrder常量的xlByRows或xlByColumns之一。
参数SearchDirection是可选的,搜索的方向,可为XlSearchDirection常量的xlNext或xlPrevious之一。
参数MatchCase是可选的,若为True,则进行区分大小写的查找。默认值为False。
参数MatchByte是可选的,仅在选择或安装了双字节语言支持时使用。若为True,则双字节字符仅匹配双字节字符。若为False,则双字节字符可匹配其等价的单字节字符。
dim flag as boolean
flag=false
for i=1 to usedrange.rows.count
for j=1 to usedrange.columns.count
if cells(i,j)="Weight/Mt Contents" then
Rows(i+1).Insert Shift:=xlDown
Rows("1:"& i).Delete Shift:=xlUp
flag=true
exit for
end if
next j
if flag then exit for
next i
在工作表中我们经常使用查找功能,在一列中查找某个内容,查找下一个,那在VBA中我们该如何进行查找呢?
我们希望通过输入班级,点击筛选就能出来想要的内容,这里我忘了在筛选之前先做个清除,所以筛选二班记录时,三班的记录没有被清除掉。
我们要把某个班级的记录筛选出来,那么就希望首先在对应的列里找到某个班级所在的单元格,这里就用到了Find,找到后就把该行复制到对应位置,然后继续查找下一个。我们就可以使用VBA代码:
Sub 筛选()Dim rng1, rng2, rng3 As Range, addr$, adr$Set rng1 = Range("a:a").Find(Range("e6").Value)addr = rng1.AddressDo Set rng1 = Range("a:a").FindNext(rng1) adr = rng1.Address Set rng2 = Cells(Rows.Count, "e").End(xlUp)(2, 1) Set rng3 = rng1.EntireRow.Range("a1:c1") rng3.Copy rng2Loop Until addr = rng1.AddressEnd Sub
如果是多个,并且不要提示,让它变成行数的变量
Microsoft Excel是微软公司的办公软件Microsoft office的组件之一,是由Microsoft为Windows和Apple Macintosh操作系统的电脑而编写和运行的一款试算表软件,最早版本是在1985年开发的。
Microsoft Excel可以进行各种数据的处理、统计分析和辅助决策操作等,具有打开或关闭表格标题行、计算列使用单个公式调整每一行、数据排序和筛选、自定义公式和文本输入等功能。目前,Microsoft Excel被广泛应用于管理、统计财经、金融等众多领域。
在工作表中我们经常使用查找功能,在一列中查找某个内容,查找下一个,那在VBA中我们该如何进行查找呢?
我们希望通过输入班级,点击筛选就能出来想要的内容,这里我忘了在筛选之前先做个清除,所以筛选二班记录时,三班的记录没有被清除掉。
我们要把某个班级的记录筛选出来,那么就希望首先在对应的列里找到某个班级所在的单元格,这里就用到了Find,找到后就把该行复制到对应位置,然后继续查找下一个。我们就可以使用VBA代码:
Sub 筛选()Dim rng1, rng2, rng3 As Range, addr$, adr$Set rng1 = Range("a:a").Find(Range("e6").Value)addr = rng1.AddressDo Set rng1 = Range("a:a").FindNext(rng1) adr = rng1.Address Set rng2 = Cells(Rows.Count, "e").End(xlUp)(2, 1) Set rng3 = rng1.EntireRow.Range("a1:c1") rng3.Copy rng2Loop Until addr = rng1.AddressEnd Sub
田齿唐恒: 1.新建一张表格,在表格中导入学生的成绩表,如图所示,将建立一个按钮,通过它来实现查找.2.单击菜单栏中的“开发工具”——插入——表单控件——按钮,在出现的十字箭头上拖住画出一个按钮,如图所示.3.在弹出的查找红...
昌邑市13838575478: 使用VBA查找excel内的内容的方法 - ?
田齿唐恒: 用Find方法即可:如在ABC.xls工作簿的Sheet1工作表中查找“ABCDE” set Rng=Workbooks("ABC.xls").sheet1.cell.Find("ABCD",,,2) 如果找到,Rng 就是找到的单元格,如果没找到.Rng为空值 Nothing
昌邑市13838575478: 用VBA如何查找某一个特定单元格里的"."? - ?
田齿唐恒: vba中查找文本不是用FIND语句,而是用instr.返回所找字符在文本中的位置.找不到返回0. 语法instr(在哪儿找,找什么?,从第几个字符开始找)比如找第一个点的位置,"1.11.111" , dim a as integer a=instr("1.11.111",".",1) 返回的值就是2,因为这个点在1.11.111的第二个字符. 如果你要找第二个点,当然要用下嵌套,把最后一个从第几个字符开始找换一下就可以了.是否解答到你的问题?
昌邑市13838575478: VBA 查找单元格数据 - ?
田齿唐恒: sub a() dim rng as range dim str as string str="aaa"set rng=cells.find(what:=str,after:=selection) if rng is nothing then msgbox "没有" exit sub else rng.select end if end sub
昌邑市13838575478: excel vba查找 - ?
田齿唐恒: 答:Sub ColorSettings() Dim C As Range Dim ComRng As Range Dim FirstAddress As String Dim FindStr As String FindStr = InputBox("请输入查找的名称", "提示") Set C = ActiveSheet.UsedRange With C Set C = .Find(what:=FindStr...
昌邑市13838575478: 在Excel中如何用vba实现查找单元格里的“/”并在其后输入东西?? - ?
田齿唐恒: 当然可以,就是稍微麻烦些.所以最好是你确定你的额据有一定的规律性. 比如,你可以先取出单元格的字符长度,用strlen,再挨个去取出每一个字符,与“/”比对,是否一致(还要考虑是否只有一个/的问题),如果确定只有一个,那么就,直接用字符连接可以完成.
昌邑市13838575478: excel vba编程怎样查找某一单元格内容在整张表上是否有重复 - ?
田齿唐恒: 1 2 3 4 5 6 7 8 9Sub查找重复() Setrg1 = Range("F8") '要查找的单元格 Setrg2 = Cells.Find(rg1.Value, rg1) Ifrg2.Address = rg1.Address ThenMsgBox "没有重复" ElseMsgBox "有重复" EndIf EndSub
昌邑市13838575478: 如何用excel vba查找某一行最后一个非空单元格 - ?
田齿唐恒: 可以用下面的语句:最后一个值 = Sheets("sheet1").Range("A65535").End(xlUp).Value 用 col=range("C1").end(xltoright).column '找到最后非空一列 语句可能存在问题:当A1至A5数据连续时,该语句能返回正确 的结果,但当不连续时,将得不到最后一个非空结果 如1245 将只得到2,而不是5(其中3是空白,如果3有数值,将得到5)
昌邑市13838575478: excel如何查找标注里面的东西. - ?
田齿唐恒: EXCEL的标注,到目前为止应该没有对应的函数可以读取.如果要查找的话,只能通过万能的VBA来实现. 举例说明. 有一列数据,其中有一个单元格的插入了批注“aaa".这样写一段代码来找到这个单元并提示单元格的地址.表格如图所示...
昌邑市13838575478: vba 选择查找单元格 - ?
田齿唐恒: 假如在ABC三列查找“张三”:Set Rng = Columns("A:C").Find("张三")'查找If Not Rng Is Nothing Then Rng.Select'如果找到就选中 凡是这三列单元格里第一个有“张三”两字的如“张三娃”等的单元格将被找到并选中,如果只能查找“张三”,前一句改一下即可:Set Rng = Columns("A:C").Find("张三", , , xlWhole)