使用自定义格式添加短划线(Microsoft Excel)
贾斯汀有他通常在工作表中使用的部件号,例如660501C016971。他想对单元格应用自定义格式,并在适当的位置将零件号自动显示为破折号,例如6605-01-C01-6971。
不幸的是,这不能使用自定义格式来完成。为什么?因为自定义格式用于显示数字,而不是文本。有一种文本格式,用“ at符号”(@)表示,仅此而已;没有其他人,也没有其他人可以定义。
由于无法使用自定义格式,因此需要一种解决方法。一种方法是检查您的零件号,并查看零件号中的文本部分是否可以删除并且零件号仍然可用。例如,贾斯汀的电话号码是660501C016971。如果零件号的格式始终在零件号的同一点上要求字母C(并且那里没有其他可能的字母),那么您可以简单地删除C并留下数字660501016971。因为它是一个数字,您可以为其开发自定义格式,在适当的位置包含破折号,在适当的位置包含字母C。自定义格式如下所示:
0000-00-C00-0000
将格式应用于包含数字660501016971的单元格后,最终将显示正确格式的零件号:
6605-01-C01-6971。但是,这种方法确实有缺点。最大的缺点是,如果您想将零件号导出到另一个程序(也许作为CSV文件),最终导出的是没有格式或字母C的原始编号。
另一个解决方法是使用公式以所需的格式显示零件号。您可以将它们输入到没有破折号的单元格中,然后使用公式在适当的位置添加破折号。
然后,在创建报告时,您只需隐藏包含零件号而不是破折号的列。如果单元格A1中没有破折号,则下面的公式将起作用:
=LEFT(A1,4) & "-" & MID(A1,5,2) & "-" & MID(A1,7,3) & "-" & RIGHT(A1,4)
如果您使用大量零件号,则可能需要一种轻松添加和删除破折号的方法。最好的方法是使用宏。您可以开发一个宏,使您可以在选定单元格区域中从零件号中添加和删除破折号。下面是这种宏的一个示例。
Sub DashesIn() DoDashes ("In") End Sub
Sub DashesOut() DoDashes ("Out") End Sub
Private Sub DoDashes(What As String) Dim c As Range Dim J As Integer For Each c In Selection.Cells If c.Value <> "" Then J = InStr(c.Value, "-") Select Case What Case "Out" While J > 0 c.Value = Left(c.Value, J - 1) & _ Mid(c.Value, J + 1, Len(c.Value)) J = InStr(c.Value, "-") Wend Case "In" If J = 0 Then c.Value = _ Left(c.Value, 4) & "-" & _ Mid(c.Value, 5, 2) & "-" & _ Mid(c.Value, 7, 3) & "-" & _ Right(c.Value, 4) End If End Select End If Next c End Sub
请注意,此清单中实际上有三个宏。第一个(DashesIn)在零件号上添加破折号,而第二个(DashesOut)
删除它们。只需选择包含零件号的单元格,然后运行将执行您要完成的操作的宏。
DashesIn和DashesOut都调用公用例程DoDashes来实际完成工作。宏检查选择中的所有单元格,然后对这些单元格的内容执行需要执行的任何操作。
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9394)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。您可以在此处为Excel的较早菜单界面找到此技巧的版本:
链接:/ excel-Using_a_Custom_Format_to_Add_Dashes [使用自定义格式添加短划线]。