Excel、VBA、VLookup文本值,带和不带撇号

Excel、VBA、VLookup文本值,带和不带撇号,excel,vba,vlookup,Excel,Vba,Vlookup,经过数小时的反复试验,我确定对范围内的文本字符串执行Application.Vlookup返回: 如果搜索范围中的文本前面没有撇号,则出现错误2042 如果文本前面有撇号,则返回搜索范围中的值 两个搜索变量都是类型8字符串,但只有带撇号的范围值被视为相等,即使正在搜索的字符串中没有撇号 有没有办法让VLoopUp考虑没有撇号相等的文本?不,我不想在每件事上都加上撇号 提前谢谢 PS制作了一个小程序,使用了不同版本的Excel,但仍然得到了不想要的结果 在电子表格中,所有数值都是通过键盘输

经过数小时的反复试验,我确定对范围内的文本字符串执行Application.Vlookup返回:

  • 如果搜索范围中的文本前面没有撇号,则出现错误2042
  • 如果文本前面有撇号,则返回搜索范围中的值
  • 两个搜索变量都是类型8字符串,但只有带撇号的范围值被视为相等,即使正在搜索的字符串中没有撇号

    有没有办法让VLoopUp考虑没有撇号相等的文本?不,我不想在每件事上都加上撇号

    提前谢谢

    PS制作了一个小程序,使用了不同版本的Excel,但仍然得到了不想要的结果

    在电子表格中,所有数值都是通过键盘输入的。 然后使用“单元格格式”选项将其更改为文本。 然后在第二个文本值“478901”中添加一个撇号,该值由单元格左上角的绿色三角形表示。 C2中的Vlookup不将A2识别为文本,即使它已被格式化为文本。 C3中的Vlookup将A3识别为文本,并在第2列中提供返回值。 在宏中,输出几乎说明了一切。
    我的数据范围由地址呼叫确认。 VarType在A2和A3中调用值,确认excel将它们视为双精度浮点数(5)和字符串(8),即使它们都已格式化为文本,尽管我怀疑这只是为了显示目的。 对于A2和A3中的值,Application.Vlookup调用返回的值与电子表格Vlookup调用的值相同。 在我之前的文章中,我说过两个vartypes都返回字符串(8),但只有带撇号的一个有效。这是excel的工作版本,比这个版本更早。所以看起来好像有人试图解决这个问题,或者只是在没有注意的情况下结果不同。不管怎样,有些东西坏了。除了在excel中,“444”不等于“444”,除excel外,“444”在其他地方等于“444”。

    看起来我需要同时测试这两种格式。

    您已将工作表单元格格式化为“文本”,但如果在输入值后执行此操作,则不会“接受”:默认情况下,单元格内容将左对齐,但出于公式等目的,值仍然是数字

    带有
    前缀的值在查找中起作用,因为它实际上是文本:如果在“文本格式”单元格中重新输入值(无需添加撇号),则这些值也将变为非数字,并将由vlookup匹配

    例如,见下文-前4行是“值”的“一般”格式;接下来4行的格式为“文本”(输入值后)

    501和506都不被识别为数字,因为它们有一个
    前缀

    504在应用文本单元格格式后重新输入,因此被视为非数字

    505和507仍然被Excel视为数字


    相关:

    始终有助于显示测试时使用的实际数据和公式。我从未体验过您所描述的内容。您似乎尝试在VBA中使用VLOOKUP。请记住,前导撇号仅将单元格内容转换为文本。在没有VBA的工作表上进行测试时,不会出现同样的问题。因此,关注查找值是正确的。但是你不给我们看你的代码是错误的。尝试使用Cstr()将查找值转换为字符串。