添加字母(Microsoft Excel中)之间的破折号
Scott想知道如何使Excel在给定单元格中的每个字母之间自动添加破折号。举个例子,如果单元格A1包含“房子”,斯科特想将其转换为“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培训的来源。
这个技巧(9634)适用于Microsoft Excel 2007中,2010年,2013年,2016年,2019年,和Excel在Office 365中你可以找到一个版本,这个尖端的Excel这里老菜单界面: