比如我要查包含“许嵩”的单元格,但我的单元格都是这个样子的“许嵩半城烟沙”,“林俊杰她说”~另外我这些都是在第一列的,我只需要返回第一个包含这个内容的单元格的行数~谢谢!
看不懂。。我今天第一次接触这东西。。
.Cell,.Rows是啥。。
天啊,看来你是不懂VBA,你想用公式来处理是吗?
公式你让我想想先
确实不懂。。不过我有pascal和c++的基础。。基本能看懂。。不过.Cells是啥意思?
我刚才录制了一个macro看编码很复杂= =
Cells.Find(What:="股票型基金", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
好复杂。。而且,我要如何得到行数呢。。
=MyFind(C18,C8:C30,1)'这是在某个单元格上写的公式,不用解释了吧?
下面这一段请在模块(你录制了一个macro的地方)复制进去,之后保存退出所有的EXCEL,再重新打开那个文件,再写入上面的公式,OK!
这是E里面的自定义函数,在2003中测试成功
Function MyFind(FindTxt As Range, FindRag As Range, FindMode As Boolean)
'FindTxt 要查找的字串,要自己点选,
'FindRag'查找的范围要自行选择
'FindMode 查找的方式单元格全部匹配为1,在你的要求里,只是部分匹配,请用0
Dim Rng As Range
Set Rng = FindRag.Find(what:=FindTxt.Value, lookat:=IIf(FindMode, 1, 0)) '
If Not Rng Is Nothing Then
MyFind = Rng.Row '查找到显示行数
Else
MyFind = "not finded"'没找到时显示这个字串
End If
End Function
只会有一个。。
你可以想像为“一人一首成名曲”
现在是要从整个第A列查出来。。
Sub Macro1()
Dim myfind As String
myfind = Range("C1")
Columns("A:A").Select
Selection.Find(What:=myfind).Activate
Range("b1") = ActiveCell.Row
End Sub
这个是假设你要查找的内容(比如“许嵩”)在单元格C1,而查找的结果(也就是包含“许嵩”的单元格行数放在B1单元格。