在字母之间添加短划线(Microsoft Excel)
Scott想知道如何使Excel在给定单元格中的每个字母之间自动添加破折号。例如,如果单元格A1包含“房屋”,Scott希望将其转换为“ h-o-u-s-e”。
可以使用公式来完成,但是很快就变得笨拙。例如,以下公式可用于在输入到单元格A1中的任何字母之间插入短划线:
=CHOOSE(LEN(A1),A1,LEFT(A1,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & RIGHT(A1,1),LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & RIGHT(A1,1), LEFT(A1,1) & "-" & MID(A1,2,1) & "-" & MID(A1,3,1) & "-" & MID(A1,4,1) & "-" & MID(A1,5,1) & "-" & RIGHT(A1,1))
这个公式的特殊示例仅适用于长度不超过六个字符的文本。因此,它适用于“房屋”,但不适用于“房屋”。该公式可以延长,但是很快它将变得很长。
更好的方法是使用宏进行转换。如果要在单元格中右插入破折号,则可以使用如下宏:
Sub AddDashes1() Dim Cell As Range Dim sTemp As String Dim C As Integer For Each Cell In Selection sTemp = "" For C = 1 To Len(Cell) sTemp = sTemp + Mid(Cell, C, 1) + "-" Next Cell.Value = Left(sTemp, Len(sTemp) - 1) Next End Sub
该宏旨在用于选定范围的单元格。只需选择要转换的单元格,然后运行宏。破折号添加在单元格中的每个字母之间。
如果您不想修改原始单元格的值,则可以创建一个用户定义的函数来完成此工作:
Function AddDashes2(Src As String) As String Dim sTemp As String Dim C As Integer Application.Volatile sTemp = "" For C = 1 To Len(Src) sTemp = sTemp + Mid(Src, C, 1) + "-" Next AddDashes2 = Left(sTemp, Len(sTemp) - 1) End Function
要使用此功能,您将在工作表中使用以下内容:
=AddDashes2(A1)
如果要确保该功能更强大,可以对其进行修改,以便处理多个单词。在这种情况下,您不希望它将空格视为“破折号”。例如,您希望例程将破折号添加到“一二”,以便它以“ o-n-e t-w-o”而不是“ o-n-e—t-w-o”显示。函数的以下变体可以解决问题:
Function AddDashes3(Src As String) As String Dim sTemp As String Dim C As Integer Application.Volatile sTemp = "" For C = 1 To Len(Src) sTemp = sTemp + Mid(Src, C, 1) If Mid(Src, C, 1) <> " " And Mid(Src, C + 1, 1) <> " " And C < Len(Src) Then sTemp = sTemp + "-" End If Next AddDashes3 = sTemp End Function
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(9633)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: