关于VBA的Find函数
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于VBA的Find函数相关的知识,希望对你有一定的参考价值。
我想在SHEET1里的C1单元格显示从SHEET2的A列里的数据表查找的100的数据的右边的值
Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheet1.Range("c1").Value = Cells(c.Row, 2)
End With
End Sub
请问有什么问题,请高手指教,谢谢!
Sub Macro1()
Cells.Find(What:="A", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False).Activate
Cells.FindNext(After:=ActiveCell).Activate
End Sub
从上面可以看到Find函数共有8个参数,分别对应Excel表格查找里面选项的各个项目,这里我就不多说了,感兴趣可以自己试下,其中只有一个参数是必须的,那就是"What",即要找的内容。下面来看整理之后的代码
Sub Find演示()
Dim rng
Set rng = ActiveSheet.UsedRange.Find(What:="A")
\'MsgBox "字母A地址为" & rng.Address(0, 0)
\'MsgBox "字母A所在行为" & rng.Row
MsgBox "字母A所在列为" & rng.Column
End Sub 参考技术A Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues, LookAt:=xlWhole)
Sheet1.Range("c1").Value = c.Offset(0, 1).Value
End With
End Sub
------
LookAt:=xlWhole 表示查找时整个单元格匹配,而不匹配1005、51008之类的数字
Offset(0, 1)表示在c的位置上,行移动0,列右移1 ,的单元格 参考技术B Private Sub CommandButton1_Click()
Dim c As Range
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheets("sheet1").Range("C1") = Sheets("sheet2").Cells(c.Row, 2)
End With
End Sub
你的代码中cells(c.row,2)没有指定是哪个表的,会引用你按钮所在的表的单元格了。 参考技术C Sheet1.Range("c1").Value = Cells(c.Row, 2)
改成
Sheet1.Range("c1").Value = c.offset(0,1)
或者改成:
Sheet1.Range("c1").Value =Sheet2.Cells(c.Row, 2)本回答被提问者采纳 参考技术D Private Sub CommandButton1_Click()
With Sheet2.Columns("A:A")
Set c = .Find(100, LookIn:=xlValues)
Sheet1.Range("c1").Value = .Cells(c.Row, 2)
End With
End Sub
Excel VBA 使用 .Find 和 .FindNext 查找精确字符串
【中文标题】Excel VBA 使用 .Find 和 .FindNext 查找精确字符串【英文标题】:Excel VBA finding an exact string using .Find and .FindNext 【发布时间】:2015-08-13 21:28:00 【问题描述】:我在使用 .Find 和 .FindNext 时遇到问题。我想准确搜索字符串“Q1”。目前,当我的 .FindNext 函数运行时,它会在一个以“Q10”为值的单元格中找到“Q1”。如何限制 .Find 和/或 .FindNext 函数来搜索我想要的确切字符串? 感谢您的帮助!
这是我的代码。例如,我想在可能具有 Q1、Q3、Q5、Q10、Q11、Q1、Q2、Q1 等的单元格范围内查找“Q1”的第三个实例。
Dim findValue As Range
' find first instance of Q1
searchString = "Q1"
Set findValue = ActiveWorkbook.Sheets("Sheet1").Cells.Find(What:=searchString)
findValue.select
' set loopMax to 2 because we want to .Findnext to run two more times to arrive at the third instance of "Q1"
For counter = 1 To loopMax
Set findValue = ActiveWorkbook.Sheets("Sheet1").Cells.FindNext(findValue)
findValue.select
Next counter
我被困住了。任何帮助将不胜感激!
【问题讨论】:
需要在您对Find()
的调用中添加lookat:=xlWhole
老兄,谢谢!!你们是救生员。
【参考方案1】:
需要在调用 Find() 时添加 lookat:=xlWhole
【讨论】:
以上是关于关于VBA的Find函数的主要内容,如果未能解决你的问题,请参考以下文章