我有一张我用作科学论文数据库的工作表。我从不同的来源复制期刊文章的标题(一些可能来自电子邮件,其他的可能是网页上的链接,或者只是文章页面上的标题)。我设置了条件格式,如果我添加的是列表中已经存在的标题,它会让我知道。我注意到有一些标题“忽略”了条件格式,而且看起来所有的违规者中都有连字符。如果我删除连字符,则条件格式将起作用。因此,来自相同标题的连字符之间存在一些“差异”,这使得条件格式无法将它们视为相同的。
有问题的标题示例:
端到端连续生物处理:对单克隆抗体设施设计、商品成本和开发成本的影响
端到端连续生物处理:对单克隆抗体设施设计、商品成本和开发成本的影响
端到端连续生物处理:对单克隆抗体的设施设计、商品成本和开发成本的影响
这种差异是什么,有没有办法解决它?我是否需要编写一个脚本来查找/替换连字符才能使其正常工作?
提亚
发布于 2021-10-02 10:52:49
仅仅因为字符看起来相同,并不意味着它们是相同的。你弄错了连字符和破折号的相似之处。从视觉上看,它们几乎是相同的--破折号比连字符略宽。
破折号被认为是“特殊字符”(即它们不是键盘上的键),但它们在html中被广泛使用。因此,例如,如果您从网站复制了一个项目,那么您可能无意中复制了破折号而不是连字符。
您可以使用CODE函数来识别字符的确切性质。
你会问“这个区别是什么,有没有办法修复它?我需要编写一个脚本来查找/替换连字符才能正常工作吗?”
这有什么区别?
重要的是要认识到,尽管这些示例看起来是相同的,但还有其他不同之处,不仅仅是连字符和破折号。
Hyphen - CODE返回"45"Dash - CODE返回"8208"Dash - CODE返回“8208”。- But there are other factors that contribute to fail to trigger the conditional formatting rule:
- Length = 128 (vs 127 for the other examples). There is an additional comma (after "cost of sales")
- the word "Impact" is spelled with an upper case "I" (lower case for the other examples)正在向前发展
你需要一个脚本吗?否(IMHO)
有没有办法解决这个问题?如上所述,除了连字符和破折号之外,还有更多的区别。而且,随着时间的推移,差异的数量和类型可能会增加。然而,有一个解决“连字符Vs破折号”的问题,这是这个问题的焦点。
公式和格式化
您的数据当前位于列A中,并且列A也受条件格式的影响。
=arrayformula(if(LEN($A2:A)-LEN(SUBSTITUTE($A2:A, char(8208), ""))=0,A2:A,arrayformula(substitute(A2:A,char(8208),char(45)))))
对于列B的自定义条件格式设置,请在列B中选择范围并设置其格式,条件公式为“
”。
公式逻辑
arrayformula使公式能够自动填充column.LEN($A2:A)-LEN(SUBSTITUTE($A2:A, char(8208), ""))=0 中没有破折号
IF:测试任何连字符,arrayformula(substitute(A2:A,char(8208),char(45)))
然后,条件格式设置规则将查找列中的重复值,并设置任何/所有重复值的格式。
您将注意到,尽管包含破折号,但Example#3并未被标记为重复。这是因为"Impact“的拼写和"cost of sales”后面的逗号。
示例

https://stackoverflow.com/questions/69400472
复制相似问题