Excel、VBA、带和不带撇号的 VLookup 文本值
Excel, VBA, VLookup text value with and without apostrophe
经过数小时的反复试验,我确定对 returns:
范围内的文本字符串执行 Application.Vlookup
- 如果搜索范围内的文本前面没有 apostrophe
,则会出现错误 2042
- Returns 如果文本前面有 apostrophe
,则为搜索范围内的值
两个搜索变量都是类型 8,字符串,但只有带有 apostrophe 的范围值被认为是相等的,即使正在搜索的字符串没有 apost rophe 在里面。
有没有办法让 Vlookup 考虑没有 apostrophe 相等的文本?不,我宁愿不必为所有内容添加 apostrophe。
提前致谢。
PS 制作了一个小程序,使用不同版本的 Excel 但仍然得到不想要的结果...
Excel Program and VLookup results
Excel Macro and it's results
在电子表格中,所有数值都是通过键盘输入的。
然后使用格式化单元格选项将它们更改为文本。
然后将 apostrophe 添加到第二个文本值“478901”,由单元格顶部 left-hand 角的绿色三角形表示。
C2 中的 Vlookup 无法将 A2 识别为文本,即使它已被格式化为文本。
C3 中的 Vlookup 确实将 A3 识别为文本,并在第 2 列中提供 returned 值。
在宏中,输出几乎说明了一切。
myData 范围由地址调用确认。
VarType 调用 A2 和 A3 中的值确认 excel 将它们视为 Double-precision floating-point 数字 (5) 和字符串 (8),即使两者都已格式化为文本,但我怀疑这只是为了展示目的。
Application.Vlookup 调用 A2 和 A3 return 中的值,与电子表格 Vlookup 调用相同。
在我之前的 post 中,我说过两个 vartypes returned string (8) 但只有带有 apostrophe 的那个有效。这是 excel 的工作版本,比这个版本早。所以看起来有人试图解决这个问题,或者它只是在没有引起注意的情况下结束了。不管怎样,有些东西坏了。除了 excel,“444”不等于“'444”,除了 excel.
,“444”在其他任何地方都等于“444”
看来我需要对两者进行测试。
您已将工作表单元格的格式设置为“文本”,但如果您这样做在输入值后它不会“接受”:单元格内容将由默认左对齐,但值仍然是数字 用于公式等
带有 '
前缀的值在查找中有效,因为它实际上是文本:如果您在“文本格式”单元格中重新输入值(无需添加撇号),那么这些值也会变为非数字并将由 vlookup 匹配。
例如,见下文 - 前 4 行是“值”的“常规”格式;接下来的 4 行被格式化为“文本”(在输入值之后)。
501 和 506 均未被识别为数字,因为它们具有 '
前缀。
504 在应用文本单元格格式后重新输入,因此被视为非数字。
505 和 507 仍然被 Excel 视为数字。
经过数小时的反复试验,我确定对 returns:
范围内的文本字符串执行 Application.Vlookup- 如果搜索范围内的文本前面没有 apostrophe ,则会出现错误 2042
- Returns 如果文本前面有 apostrophe ,则为搜索范围内的值
两个搜索变量都是类型 8,字符串,但只有带有 apostrophe 的范围值被认为是相等的,即使正在搜索的字符串没有 apost rophe 在里面。
有没有办法让 Vlookup 考虑没有 apostrophe 相等的文本?不,我宁愿不必为所有内容添加 apostrophe。
提前致谢。
PS 制作了一个小程序,使用不同版本的 Excel 但仍然得到不想要的结果...
Excel Program and VLookup results
Excel Macro and it's results
在电子表格中,所有数值都是通过键盘输入的。
然后使用格式化单元格选项将它们更改为文本。
然后将 apostrophe 添加到第二个文本值“478901”,由单元格顶部 left-hand 角的绿色三角形表示。
C2 中的 Vlookup 无法将 A2 识别为文本,即使它已被格式化为文本。
C3 中的 Vlookup 确实将 A3 识别为文本,并在第 2 列中提供 returned 值。
在宏中,输出几乎说明了一切。
myData 范围由地址调用确认。
VarType 调用 A2 和 A3 中的值确认 excel 将它们视为 Double-precision floating-point 数字 (5) 和字符串 (8),即使两者都已格式化为文本,但我怀疑这只是为了展示目的。
Application.Vlookup 调用 A2 和 A3 return 中的值,与电子表格 Vlookup 调用相同。
在我之前的 post 中,我说过两个 vartypes returned string (8) 但只有带有 apostrophe 的那个有效。这是 excel 的工作版本,比这个版本早。所以看起来有人试图解决这个问题,或者它只是在没有引起注意的情况下结束了。不管怎样,有些东西坏了。除了 excel,“444”不等于“'444”,除了 excel.
,“444”在其他任何地方都等于“444”
看来我需要对两者进行测试。
您已将工作表单元格的格式设置为“文本”,但如果您这样做在输入值后它不会“接受”:单元格内容将由默认左对齐,但值仍然是数字 用于公式等
带有 '
前缀的值在查找中有效,因为它实际上是文本:如果您在“文本格式”单元格中重新输入值(无需添加撇号),那么这些值也会变为非数字并将由 vlookup 匹配。
例如,见下文 - 前 4 行是“值”的“常规”格式;接下来的 4 行被格式化为“文本”(在输入值之后)。
501 和 506 均未被识别为数字,因为它们具有 '
前缀。
504 在应用文本单元格格式后重新输入,因此被视为非数字。
505 和 507 仍然被 Excel 视为数字。