VBA find函数查找范围内有google sheet 函数函数,查不全怎么办啊?

EXCEL VBA,为什么函数子过程中不能使用find方法。_百度知道
EXCEL VBA,为什么函数子过程中不能使用find方法。
Public Function MDD(DH As String)MDD = Sheet1.Cells(Sheet1.Range(&a:a&).Find(what:=DH).Row, 6)End Function其中Sheet1.Range(&a:a&).Find(what:=DH)怎样都查找不到,值都是nothing。请教高手解决,谢谢。
如图:搜索的区域a列为公式生成。哎呀,我自己解决了,FIND方法中有一个搜索选项lookin,参数设为xlValues就好了。
我有更好的答案
可以查到啊?可能你的用法错了!Public Function MDD(DH As String)MDD = Sheet1.Cells(Sheet1.Range(&a:a&).Find(what:=DH).Row, 6)End FunctionSub A()MsgBox MDD(&PP&)End Sub
如果您类别的字符是用公式生成出来的呢?比如TEXT(C13,&yymm&)C13是当前时间
=MDD(TEXT(A13,1))这样呢?
不行呀,是搜索的区域的值是由公式生成的,不是搜索项是公式生成的。DH可以是一个表达式的。
不明白你说的是什么意思了,你是说F13里面是一个公式?也可以显示出来啊?显示的结果就等于F12的结果啊?再不行你就把文件传上来我看看呢?
采纳率:31%
如果是MDD为nothing,那就是你的Sheet1表中第6列没有值;如果是Find为nothing,那就是你的Sheet1表中A列不存在DH所指定的字符串;  否则就是不存在名为Sheet1的表
sheet1肯定存在,DH更是肯定存在。
那就只能是你在传入的DH的类型和表格里实际的值的类型不匹配了
excel中的函数和VBA中并不是完全对应的,试试InStr
咱们说的完全不是一个问题。不过还是谢谢你。
为您推荐:
其他类似问题
excel的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。I tried to search a value from another sheet rather using the .FIND function
Private Function Search(rng As Range, FindString As String) As Range
Set Search = .Find(what:=FindString, _
After:=.Cells(.Cells.Count), _
LookIn:=xlValues, _
lookat:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
thing is that if I enter
Search(Range("'DataSheet'!A1:Z1000"),"STARTING")
It works. When I try
SearchString = "'" & Selected_sheet &"'!A1:Z1000"
It does not work Selected_sheet is just a name of a worksheet (In this case, it is "DataSheet"). Using
Search(Range(SearchString ),"STARTING")
Error: RUN-TIME ERROR '91'
Object variable or With Block Varibale Not Set
What could be the actual problem?
解决方案 Your method is not incorrect but I recommend not passing your range like that.
Search(Sheets("DataSheet").Range("A1:Z1000"),"STARTING")
Selected_sheet = "DataSheet"
Search(Sheets(Selected_sheet).Range("A1:Z1000"),"STARTING")
BTW there is nothing wrong with Range(SearchString) in your code. It should work. How are you calling Search? Hope like this?
Dim Ret As Range '&~~~
Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")
Reason: The function returns a Range so you cannot just call it without Set Ret = ... Where Ret is again declared as a Range.
You can also get that error if your Search function doesn't return a range and you try using that Ret. See this example.
Dim Ret As Range
Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")
'&~~ This will give you RUN-TIME ERROR '91' if "STARTING" is not found
Debug.Print Ret.Address
So how do we tackle this
Dim Ret As Range
Selected_sheet = "DataSheet"
SearchString = "'" & Selected_sheet & "'!A1:Z1000"
Set Ret = Search(Range(SearchString), "STARTING")
If Not Ret Is Nothing Then
Debug.Print Ret.Address
Debug.Print "Search Didn't return any results"
本文地址: &
我试图从另一张表中搜索一个值,而不是使用.FIND函数
私有功能搜索(rng As Range, FindString As String)As Range
Set Search = .Find(what:= FindString,_
After:=。Cells(.Cells.Count),_
LookIn := xlValues,_
lookat:= xlWhole,_
SearchOrder:= xlByRows,_
SearchDirection:= xlNext,_
MatchCase:= False)结束With
有趣的是,如果我输入
搜索(范围(“DataSheet”!A1:Z1000“),”启动“)
它有效。当我尝试
SearchString =“'”& Selected_sheet&“'!A1:Z1000”
它不工作Selected_sheet只是一个工作表(在这种情况下,它是“DataSheet”)。使用
搜索(Range(SearchString),“STARTING”) 错误:运行时错误'91'对象变量或块变量不设置
可能是实际问题?
解决方案 您的方法不正确,但我建议不要传递这样的范围。
搜索(表格(“DataSheet”)。范围(“A1:Z1000”), “开始”)
Selected_sheet =“DataSheet”搜索(Sheets(Selected_sheet).Range(“A1:Z1000”),“STARTING”)
您的代码中的 Range(SearchString)没有任何错误。应该工作您如何致电搜索?希望这样吗?
Dim Ret As Range'& ~~~
Selected_sheet =“DataSheet “ SearchString =”'“& Selected_sheet& “'!A1:Z1000” Set Ret = Search(Range(SearchString),“STARTING”)
原因:该函数返回一个范围,所以你不能只调用它,而不需要$ code> Set Ret = ... 其中 Ret 再次声明为范围。
如果您的搜索函数不返回范围,并尝试使用 Ret 。看到这个例子。
Dim Ret As Range
Selected_sheet =“DataSheet” SearchString =“'”& Selected_sheet& “'!A1:Z1000” Set Ret = Search(Range(SearchString),“STARTING”) '& ~~这将给你RUN-TIME ERROR'91' “STARTING”未找到 Debug.Print Ret.Address
那么我们如何处理这个
Dim Ret As Range
Selected_sheet =“DataSheet” SearchString =“'”& Selected_sheet& “'!A1:Z1000”设置Ret =搜索(范围(SearchString),“启动”) 如果Not Ret没有则 Debug.Print Ret.Address
Debug.Print“搜索没有返回任何结果”结束如果
本文地址: &
扫一扫关注IT屋
微信公众号搜索 “ IT屋 ” ,选择关注
与百万开发者在一起
(window.slotbydup = window.slotbydup || []).push({
id: '5828425',
container: s,
size: '300,250',
display: 'inlay-fix'
Java 企业级开发高级进阶查看: 356|回复: 7
利用Find查找工作表函数最大值和最小值
阅读权限10
在线时间 小时
& & 请教各位大神,利用find查找区域内最大值和最小值,但是如果区域内有正负相同的数据,且负数在前的话会查找到的对象变成负数了。怎么会这样?各个数据不同的话还能正确查找。
(94.14 KB, 下载次数: 0)
10:28 上传
阅读权限90
在线时间 小时
最大值是MAX,最小值是MIN,为什么要用FIND?
定义数组用函数解决,FIND是用来找确定值得。
阅读权限10
在线时间 小时
& & 再上传 个附件试试
10:59 上传
点击文件名下载附件
12.61 KB, 下载次数: 4
阅读权限10
在线时间 小时
最大值是MAX,最小值是MIN,为什么要用FIND?
定义数组用函数解决,FIND是用来找确定值得。
我是要 先查找到对应的单元格再返回对应单元格行号
阅读权限90
在线时间 小时
本帖最后由 活在理想的世界 于
12:34 编辑
Sub d()
Dim arr(), w As WorksheetFunction, 最大值, 最小值
Set w = WorksheetFunction
k = Range(&a1048576&).End(3).Row - 1
arr = Range(&d2&).Resize(k, 1)
最大值 = w.Max(arr)
最小值 = w.Min(arr)
MsgBox 最大值
MsgBox 最小值
MsgBox w.Match(最大值, arr, 0)
MsgBox w.Match(最小值, arr, 0)
End Sub复制代码
我是要 先查找到对应的单元格再返回对应单元格行号
这并不矛盾,找到数字了还怕得不到行号?
find不适合在这里用,在这里用的就是最大值和最小值。
阅读权限30
在线时间 小时
本帖最后由 qingc0221 于
12:55 编辑
=MAX(IF(D2:D28=MAX($D$2:$D$28),ROW(D2:D28)))
=MAX(IF(D2:D28=MIN($D$2:$D$28),ROW(D2:D28)))
阅读权限10
在线时间 小时
先森李 发表于
我是要 先查找到对应的单元格再返回对应单元格行号
这个看得懂,谢谢大佬解惑。
阅读权限10
在线时间 小时
=MAX(IF(D2:D28=MAX($D$2:$D$28),ROW(D2:D28)))
=MAX(IF(D2:D28=MIN($D$2:$D$28),ROW(D2:D28)))
&&数组刚开始接触,看来还是得多交流啊。
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师查看: 5506|回复: 16
请教问题:Find函数能不能跨工作簿查询取值
阅读权限50
在线时间 小时
我有两个表格,通过关键字到另一个表格中提取数据,用application.vlookup感觉很慢,字典又不是很熟,能不能用Find函数来进行跨工作簿查询,请高人指点,谢谢!
阅读权限95
在线时间 小时
dim rg as rangeset rg=worksheets("另一张表").range("a10:c200").find("要找的数据",lookin:=xlvalues)if not rg is nothing then msgbox rg
阅读权限50
在线时间 小时
我也不知道代码为什么找不到数据了,请各位帮忙看看,谢谢!Sub a()& Dim wk As Object& Dim i As Integer& Dim tempOP As Range& On Error Resume Next&&& Set wk = CreateObject(ThisWorkbook.Path & "\1.xls")&&&&&& With wk.Sheets(1).Range("a:a")&&&&&&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = .Cells.Find(what:=ThisWorkbook.Sheets(1).Cells(i, 4).Value, after:=ActiveCell, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& searchdirection:=xlNext)&&&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&&& ThisWorkbook.Sheets(1).Cells(i, 8) = tempOP.Offset(0, 8)&&&&&&&&&&&&& Else&&&&&&&&&&&&&&&& ThisWorkbook.Sheets(1).Cells(i, 8) = ""&&&&&&&&&&&&& End If&&&&&&&&&&& Set tempOP = Nothing&&&&&&&& Next&&&&&& End With&&& Set wk = NothingEnd Sub附件如下:
(12.12 KB, 下载次数: 101)
14:02 上传
点击文件名下载附件
请教问题:Find函数能不能跨工作簿查询取值
阅读权限95
在线时间 小时
不讲道理了,反正下面的程序通过了Sub a()&&& Dim i As Integer&&& Dim tempOP As Range&&& Workbooks.Open ThisWorkbook.Path & "\1.xls"&&& With Workbooks(2).Sheets(1).Columns(1)&&&&&&& Set tempOP = Workbooks(2).Sheets(1).[a1]&&&&&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = .Cells.Find(what:=Workbooks(1).Sheets(1).Cells(i, 4).Value, after:=tempOP, _&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext)&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&& Workbooks(1).Sheets(1).Cells(i, 8) = tempOP.Offset(0, 8)&&&&&&&&&&& Else&&&&&&&&&&&&&&& Workbooks(1).Sheets(1).Cells(i, 8) = ""&&&&&&&&&&& End If&&&&&&& Next&&& End With&&& Workbooks(2).CloseEnd Sub
阅读权限50
在线时间 小时
Sub aa()& Dim wk As Workbook& Dim i As Integer& Dim tempOP& With ThisWorkbook.Sheets(1)&&& Set wk = Application.Workbooks.Open(ThisWorkbook.Path & "\1.xls")&&&&& wk.Sheets(1).Activate&&&&&&&& For i = 1 To .[d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = ActiveSheet.Cells.Find(what:=.Cells(i, 4).Value, after:=ActiveCell, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& searchdirection:=xlNext)&&&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&& .Cells(i, 8) = tempOP.Offset(0, 7)&&&&&&&&&&&&& Else&&&&&&&&&&&&&&&& .Cells(i, 8) = ""&&&&&&&&&&&&& End If&&&&&&&&&&& Set tempOP = Nothing&&&&&&&& Next&&&&&& End With&&& wk.Close 0End Sub注意,是offset(0,7).这种情况,可用字典。
阅读权限50
在线时间 小时
多谢两位老师指导,我弄了半天头弄大了,offset那里也没看仔细,非常感谢!另外huiz999老师可否发一个字典的代码来学习一下,谢谢!
阅读权限50
在线时间 小时
以下是引用hupanshan在 15:10:00的发言:不讲道理了,反正下面的程序通过了Sub a()&&& Dim i As Integer&&& Dim tempOP As Range&&& Workbooks.Open ThisWorkbook.Path & "\1.xls"&&& With Workbooks(2).Sheets(1).Columns(1)&&&&&&& Set tempOP = Workbooks(2).Sheets(1).[a1]&&&&&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = .Cells.Find(what:=Workbooks(1).Sheets(1).Cells(i, 4).Value, after:=tempOP, _&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext)&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&& Workbooks(1).Sheets(1).Cells(i, 8) = tempOP.Offset(0, 8)&&&&&&&&&&& Else&&&&&&&&&&&&&&& Workbooks(1).Sheets(1).Cells(i, 8) = ""&&&&&&&&&&& End If&&&&&&& Next&&& End With&&& Workbooks(2).CloseEnd Subhupanshan老师,代码应该是这样的:Sub hupanshan()&&& Dim i As Integer&&& Dim tempOP As Range&&& Workbooks.Open ThisWorkbook.Path & "\1.xls"&&& With Workbooks("1").Sheets(1).Columns(1)&&&&&&& Set tempOP = Workbooks("1").Sheets(1).[a1]&&&&&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = .Cells.Find(what:=Workbooks("2").Sheets(1).Cells(i, 4).Value, after:=tempOP, _&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlNext)&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&& Workbooks("2").Sheets(1).Cells(i, 8) = tempOP.Offset(0, 7)&&&&&&&&&&& Else&&&&&&&&&&&&&&& Workbooks("2").Sheets(1).Cells(i, 8) = ""&&&&&&&&&&& End If&&&&&&& Next&&& End With&&& Workbooks("1").CloseEnd Sub
阅读权限95
在线时间 小时
offset 我也不熟,测试时就先多拷贝了两列数据。而发现的问题是Find找不到东西。后来改了几个地方,也许有的地方不改也可以。
阅读权限50
在线时间 小时
& & & & & & & &
我自己的代码也改好了,如下:Sub a()& Dim i As Integer& Dim tempOP As Range& On Error Resume Next&&& Set wk = Workbooks.Open(ThisWorkbook.Path & "\1.xls")&&&&&& With wk.Sheets(1)&&&&&&'.Range("a:a")不能要&&&&&&&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&&&&& Set tempOP = .Cells.Find(what:=ThisWorkbook.Sheets(1).Cells(i, 4).Value, after:=ActiveCell, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, _&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& searchdirection:=xlNext)&&&&&&&&&&&&& If Not tempOP Is Nothing Then&&&&&&&&&&&&&&&& ThisWorkbook.Sheets(1).Cells(i, 8) = tempOP.Offset(0, 7)&&&&&&&&&&&&& Else&&&&&&&&&&&&&&&& ThisWorkbook.Sheets(1).Cells(i, 8) = ""&&&&&&&&&&&&& End If&&&&&&&&&&& Set tempOP = Nothing&&&&&&&& Next&&&&&& End With&&& Set wk = Nothing&&& Workbooks("1").CloseEnd Sub
阅读权限50
在线时间 小时
Sub a()'字典解法& Dim wk As Workbook, i As Integer, dic As Object, arr(1 To 1000, 1 To 2)& Set dic = CreateObject("scripting.dictionary")&&& Set wk = Application.Workbooks.Open(ThisWorkbook.Path & "\1.xls")&&& With wk.Sheets(1)&&& For i = 1 To .[a65536].End(xlUp).Row&&&&&&&&&&& arr(i, 1) = .Cells(i, 1).Value&&&&&&&&&&&&&&& arr(i, 2) = .Cells(i, 8).Value&&&&&&&&&&& dic(arr(i, 1)) = arr(i, 2)&&& Next&&& End With&&& wk.Close 0&&& For i = 1 To [d65536].End(xlUp).Row&&&&&&&& If dic.exists(Cells(i, 4).Value) Then&&&&&&&&&&& Cells(i, 8) = dic.Item(Cells(i, 4).Value)&&&&&&&& End If&&& Next&&&&&& End Sub
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师find函数查找多个条件_中华文本库
它们的区别是,Find 区分大小 写,而 Search 不分大小写(当被查找的文本为英文时)。 另外,在 Excel 中,对文本进行处理的很多函数都提供了一个特别用来处理 双...
VBAfind函数_IT/计算机_专业资料。VBAfind函数(excel)[VBA]关于查找方法(Find ...可以使用该方法继续 执行查找,查找下一个与 Find 方法中所指定条件的数据相匹配...
Excel 中 SEARCH 和 FIND 函数的区别 来源:excel 格子社区 Excel 中的 SEARCH 函数和 FIND 函数都可以在指定的 文本字符串中查找另一个文本字符串第一次出现的...
设置 FIND 第一个参数为常量数组,用 COUNT 函数统计 FIND 查找结果 七、日期...则此函数返回的结果表示求该班男生的成绩之和; 13、多条件求和: {=SUM(IF(...
_finddata_t 的使用 那么到底如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些 函数和结构体在&io.h&的头文件中,结构体为 struct _find...
C++find函数用法_计算机软件及应用_IT/计算机_专业资料。C++ STL 里提供了很多字符串操作的函数,下面的字符串查找方面的部分函数 用法简介。 1、find() 查找第一...
Excel宏Vba Find()函数详细说明_计算机软件及应用_IT/计算机_专业资料。Excel宏...可以使用该方法继续执行 查找,查找下一个与 Find 方法中所指定条件的数据相匹配...
此函数用于双字节字符。也可使用 SEARCHB 查找其他文本字符串中的某个文本字符 串。 语法 FIND(find_text,within_text,start_num) FINDB(find_text,within_text,...
Findwindow函数与FindWindowEx函数用法_数学_自然科学_专业资料。Findwindow 函数与...FindWindow 多出两个句柄参数: FindWindowEx( Parent: HWND; {要查找子窗口的...
今天我来总结一下 Loadrunner 中的检查点函数,主要介绍两个函数:web_find ()和 web_reg_find();这两个函数均用于内容的查找,但两者也有本质的 区别,具体介绍...

我要回帖

更多关于 sheet函数 的文章

 

随机推荐