在写我遇到的第一个问题的过程中,我意外地找到了解决方案(有点)。我遇到的问题是在粘贴以连字符开头的文本时,Excel 会(似乎)随机分布#NAME?错误。显然我知道这个错误是因为连字符是一个运算符,而 Excel 正在寻找对它的某个范围或值进行操作。我不知道这些错误不是随机的——它们出现在任何不包含括号的单元格中。
示例(显然必须粘贴不带引号)-
(粘贴到单元格时返回错误)
“- 盖章”
(粘贴时不返回错误)
"- 盖章 ("
所以现在,有了这些知识,我有一个新问题:因为我只是将文本复制到我们从外部来源收到的 excel 中,有时这些字符串会有括号,有时它们不会(但它们总是会开始带连字符),我有什么办法可以从 Excel 中改变这种行为?例如,即使单元格返回#NAME,我是否可以对功能栏中显示的文本进行操作?错误?我尝试使用 =IFERROR 和 =CONCATENATE 在函数开头添加撇号来解决错误,但我无法在问题单元格上使用函数,而它仍然评估为错误。
因为我正在从外部文本源复制这些数据(大量),除了先将其粘贴到记事本并在需要的地方手动添加括号之外,我还能做些什么吗?这似乎相当浪费。
当然,如果您可以先将列格式化为文本,然后粘贴,则可以解决许多实际问题。
虽然不是全部。
另一种方法是粘贴数据,然后在仍处于选中状态时执行
Find and Replace
. 什么的?您会注意到,在所有发生错误的情况下,单元格中都有一个“=”:=- Stamp
作为示例。“=”可以替换为单引号字符:'
现在数据被视为文本。(错误来自 Excel 认为,由于连字符,您试图获得“减去命名范围'Stamp'”的结果。由于没有这样的名称,它返回 #NAME? 错误。)
严格来说,Excel 想要找到这样的带有双引号的文本,因此它知道它是文本。可以找到,
(
因为名称中不能有空格,因此它知道它不是命名范围并尝试将其视为文本。哪个适合你。不幸的是,
"
添加第二个需要一个公式,因为 Excel 只通过 VBA 提供正则表达式,如果你想使用 VBA,这些都不会出现所以......最好不要担心边缘,除非先格式化列不为你解决问题。或者Find and Replace
不希望使用删除“=”(您可能只想粘贴并“它有效”......之后不要执行几个步骤)。在任何情况下,您都必须在记事本中处理数据,因为 Excel 提供了满足您所有需要的方法。但你可能更喜欢它。而且我相信 NotePad++ 会做正则表达式,这可能会很好。格式化的想法,
Find and Replace
想法,或使用公式来清理它,或任何组合,都会很好地发挥作用。这不是 Excel 令人讨厌且无法解决的问题之一,而只是其令人讨厌的问题之一。