从ISBN编号中删除短划线(Microsoft Excel)
Ciaran在图书馆中工作,并且经常必须在Excel中使用很长的ISBN号列表。这些数字必须包含10或13位数字,可以包含破折号,并且可以具有前导零。他对包含ISBN的单元格使用文本格式,以使它们完整地保留为文本字符串。出于某些目的,必须删除ISBN中的破折号(他为此使用“查找并替换”),这就是麻烦的开始。
0-241-95011-2变成241950112(现在下降到9位数字),更糟的是,978-0-00-200784-9变成9.78E + 12(科学计数法)。 Ciaran找不到解决这两个问题的任何方法,无论他在使用“查找和替换”来消除破折号之前或之后如何进行格式化。
发生的情况是,当您编辑单元格时,Excel会将单元格内容解析为数字而不是文本。在这种情况下,最好的解决方案是在执行“查找和替换”以消除破折号之前,确保单元格内容前面带有撇号。
如果您的工作表在A列中包含很多ISBN号,则可以使用以下公式添加撇号:
= "'" & A1
然后,您可以复制公式的结果,然后使用“选择性粘贴”将值粘贴回A列。然后,A列中的每个值都将包含撇号。当您以后执行“查找和替换”时,前导零仍然会出现,并且您将不会尝试任何科学计数法。
之所以起作用,是因为撇号是Excel的指示符,它指示应将单元格内容视为文本。撇号未显示在工作表中,但它是单元格内容的一部分,正如您可以通过查看公式栏来看出的那样。
另一种方法是绕过使用“查找和替换”来消除破折号。而是使用SUBSTITUTE函数以这种方式删除它们:
=SUBSTITUTE(A1,"-","")
SUBSTITUTE工作表函数返回文本值,因此将保留任何前导零,并且Excel不会尝试将数字转换为使用数字格式。
如果您通常需要从包含ISBN的单元格区域中删除破折号,则最好使用宏来执行该操作。以下宏可以在运行之前对您选择的任何单元格起作用。
Sub RemoveDashes() Dim c As Range Dim sISBN As String Application.ScreenUpdating = False For Each c In Selection sISBN = Replace(c, "-", "") c.NumberFormat = "@" c.Value = "'" & sISBN Next Application.ScreenUpdating = True End Sub
基本上,宏可以执行三件事:删除破折号,将单元格设置为文本格式,并将剥离后的ISBN放回到单元格中,并在其前面加上撇号。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9928)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本: