Function VBA查找功能可以';找不到给定的值
我编写了一个程序,在某一点上,在一行中搜索给定的供应商名称,然后从该列中提取该供应商的项目成本。电子表格中的供应商名称直接从封面中提取,程序从同一来源读取供应商名称。这个程序在80多个单独的excel文件中,并且在几乎每一个文件中都运行良好。然而,有两三个在给定的范围内找不到任何值,尽管事实上我正在寻找我试图搜索的值。我尝试在Excel中手动使用find函数,但它也找不到字符串。什么会阻止Excel查找这些值Function VBA查找功能可以';找不到给定的值,function,vba,excel,find,Function,Vba,Excel,Find,我编写了一个程序,在某一点上,在一行中搜索给定的供应商名称,然后从该列中提取该供应商的项目成本。电子表格中的供应商名称直接从封面中提取,程序从同一来源读取供应商名称。这个程序在80多个单独的excel文件中,并且在几乎每一个文件中都运行良好。然而,有两三个在给定的范围内找不到任何值,尽管事实上我正在寻找我试图搜索的值。我尝试在Excel中手动使用find函数,但它也找不到字符串。什么会阻止Excel查找这些值 With Worksheets("Decision Matrix Summary")
With Worksheets("Decision Matrix Summary")
m = 0
For Each c In .Range("N23:N42")
If c.Value <= 10 And c.Value > 0 Then
m = m + 1
vendor = c.Offset(0, -13).Value
Worksheets("Supplier Cost Comparison").Cells(2, m + 1) = vendor
Set cell = Worksheets("Bid Tabulation Summary").Rows("9").Find(what:=vendor, after:=Worksheets("Bid Tabulation Summary").Cells(9, 1), _
LookIn:=xlValues, lookat:=xlPart, searchorder:=xlByColumns, searchdirection:=xlNext, _
MatchCase:=False, searchformat:=False)
If Not cell Is Nothing Then
bottomcell = cell.Offset(60000, 0).Address
cell = Worksheets("Bid Tabulation Summary").Range(bottomcell).End(xlUp).Address
Worksheets("Supplier Cost Comparison").Cells(3, m + 1).Value = Worksheets("Bid Tabulation Summary").Range(cell).Value
Else
MsgBox ("A vendor could not be found in the Bid Tabulation Summary. Please refer to the Supplier Cost Comparison tab to determine which vendor.")
Error = "Very Yes"
Exit Sub
End If
Else: End If
Next
End With
和工作表(“决策矩阵摘要”)
m=0
对于范围内的每个c(“N23:N42”)
如果c.值为0,则
m=m+1
供应商=c.偏移量(0,-13).值
工作表(“供应商成本比较”)。单元格(2,m+1)=供应商
设置单元格=工作表(“投标表格汇总”)。行(“9”)。查找(what:=供应商,after:=工作表(“投标表格汇总”)。单元格(9,1)_
LookIn:=xlValues,lookat:=xlPart,searchorder:=xlByColumns,searchdirection:=xlNext_
MatchCase:=False,searchformat:=False)
如果不是的话,那细胞就什么都不是了
底部单元格=单元格偏移量(60000,0).地址
单元格=工作表(“投标表格汇总”)。范围(底部单元格)。结束(xlUp)。地址
工作表(“供应商成本比较”)。单元格(3,m+1)。值=工作表(“投标表格汇总”)。范围(单元格)。值
其他的
MsgBox(“在投标一览表摘要中找不到供应商。请参阅供应商成本比较选项卡以确定哪个供应商。”)
Error=“非常是”
出口接头
如果结束
否则:如果
下一个
以
非常感谢您的帮助。谢谢
编辑:我修好了。我从要查找值的单元格中清除了格式,然后重新输入了公式。是否存在阻止搜索单元格的格式?我将函数设置为忽略格式设置,因此据我所知,这不应该是一个问题。如果有人能告诉我这方面的任何信息,我将不胜感激。我修正了它。我从要查找值的单元格中清除了格式,然后重新输入了公式。Excel和VBA中的“查找”功能都成功地找到了搜索范围中的值,并通过我的程序返回了该单元格的正确位置。我知道这是一个老问题,但这是我在寻找同一问题的解决方案时遇到的问题之一。造成问题的不是格式。由于某些原因,Excel无法将单元格内容识别为值。我甚至没有任何公式在我的范围内,但它不会承认其中一些是一个值
如果将
Lookin:=xlValues
更改为Lookin:=xlFormulas
,它仍然会找到它,不过,作为一种解决方法,我首先使用xlValues
进行查找,然后如果范围仍然为零,则使用xlFormulas
进行查找。现在它可以正常工作了。最明显的解释是单元格中的值不是您认为的值。你能提供几个例子吗?你检查过任何流氓字符吗?试着用what:=Trim(vendor)
代替what:=vendor
也检查chnagingLookIn:=xlValues
到LookIn:=xlFormulas
是否有区别?你正在硬编码工作表的名称。。。可能工作表名称已被修改?感谢您的回复!我在初步排除故障的同时完成了所有这些建议;唯一的例外是修剪(供应商)添加,这并没有产生任何影响。谢天谢地,我想出了一个解决办法;请参考我的编辑。我仍然不知道最初是什么阻止了find函数的工作。