我有一个恼人的问题,我需要在包含数字和字母数字数据的列中查找值。例如:
1234567
P654321
7654321
V234567
..等等。
此列被导入/粘贴到 excel 中,根据我过去的经验,excel 会根据导出数据的软件(例如 SAS)以某些格式存储数据。在我上面的例子中,excel 将其中含有字符的数据视为文本,将仅含有数字的数据视为数字。
我需要知道如何强制 Excel 中此列的存储格式,这样我就不必担心这个问题查找有些失败,有些成功。虽然其中一些显示为数字,但实际上不是 - 它们应该被视为字符变量。我尝试将此列的格式设置为文本 - 但这没有帮助。
答案1
一旦数据已经存在,将格式更改为文本就不起作用,您可以使用“文本到列”功能将其更改为文本。
选择数据列并使用
数据 > 文本到列 > 选择“分隔符” > 下一步 > 不设置任何“分隔符”(取消选中所有框) > 下一步 > 从“列数据格式”中选择“文本” > 完成
答案2
另一个选项是使用文本或数字查找值进行查找,例如
=IFERROR(VLOOKUP(D2,$A$1:$B$4,2,FALSE),VLOOKUP(D2+0,$A$1:$B$4,2,FALSE))
第一次查找将执行文本查找(如果 D2 是文本),如果失败,则将使用 +0 运算将 D2 强制转换为数字来执行查找。
答案3
当人们拥有混合格式的数据(其中数字材料可能以文本或数字的形式存在)并且不想清理它时,我通常会提供以下建议。意图与teylyn
的方法类似:
(使用她的细胞和范围)
=IF(ISERROR(VLOOKUP(D2,$A$1:$B$4,2,FALSE)),VLOOKUP(TEXT(D2,"@"),$A$1:$B$4,2,FALSE),VLOOKUP(D2,$A$1:$B$4,2,FALSE))
Excel 尝试使用文本作为数字输入 (D2) 进行查找。如果失败(希望是因为它是数字,而不是其他东西),它会将输入转换为文本并尝试。假设输入存在于列表中,并且这是唯一的麻烦,那么您的基础就得到了覆盖。
任何错误都表明存在其他问题。通常当我提供此信息时,有人正在从互联网上获取数据,而问题实际上是他们看不到且不会删除的额外字符。不过这里预计不会有其他问题,所以...
由于任何错误都表明存在其他问题,因此此公式有助于排除故障,避免相信文本与数字问题仍然是问题所在。知道它根本不是问题,并不能帮助我们真正解决问题。
附注:根据我的经验,通过任何常用方式(包括接受答案的方式、方法Paste|Special|Multiply
以及在设置格式后实际编辑(F2
,然后Enter
)每个单元格)来修复列的格式,可能只适用于 90% 的情况。由于某种我尚未弄清楚的原因,相当多的情况失败了。如果它确实只是文本或数字,这将克服这个问题。
话虽如此,我还要说另外两件事。一件很小的事,那就是偶尔列表中会有 TRUE 或 FALSE 字样,Excel 经常甚至大多数时候将其视为第三种格式。根据我的经验,尽管这并不一定会影响每个函数,而且在这种情况下差异可能并不重要,但我不能将世界局限于这一点。它有时会污染情况,如果数据可以接受,或者 SAS 中的使用可以使这样的结果出现在其中,即使它永远不可能“自然地”出现在数据中,也可能污染情况。(比如,也许两者都不可能是医疗程序的名称,但底层程序可能会在该字段中将 null 用作其中一个,并且数据转储可能包含该 null 而不是 null。这种事情。很奇怪,但它确实发生了。)
第二,在我的使用过程中,我的数据都经过了合理的处理和来源。例如,我实际上并不经常进行网络抓取,当我使用粗略数据时,我通常会将其与某种报告或粘贴一起引入,这样就不会带来太多错误。发帖人提到 SAS 是来源,所以我应该期望导入的数据一点也不粗略,并且期望答案中的所有三种方法都可以正常工作。