如何在 Excel 中格式化字符串以插入连字符?

如何在 Excel 中格式化字符串以插入连字符?

我单元格中有一个 8 个字符的字符串。例如 ABCDEFGH,我可以使用单元格的自定义数字格式将其显示为 AB-CD-EF-GH 吗?

目前我的方法是让另一个单元格引用它并使用如下公式

=LEFT(A1,2)&"-"&MID(A1,3,2)&"-"&MID(A1,5,2)&"-"&RIGHT(A1,2)

答案1

正如评论中指出的那样,没有可用的自定义数字格式代码来执行您想要的操作。您唯一的选择就是您正在做的事情。

有关自定义数字格式代码及其工作原理的详细信息,您可以访问此 Microsoft 网页

答案2

使用 Office 365 Excel,可以将 TEXTJOIN 函数用作数组公式:

=TEXTJOIN("-",TRUE,MID(A1,(ROW($AAB$1:$AAB$4)-1)*2+1,2))

作为数组公式,退出编辑模式时需要使用 Ctrl-Shift-Enter 而不是 Enter 进行确认。

Mid 创建一个由两组字母组成的数组,然后 TEXTJOIN 将它们通过-它们之间的 连接起来。

在此处输入图片描述

答案3

由于 Excel 不提供任何自定义格式,因此我建议您使用 VBA(宏)代码,这是将所需字符以固定间隔放置在单元格值之间的最快方法。

在此处输入图片描述

Sub InsertCharacter()

Dim Rng As Range
Dim InputRng As Range, OutRng As Range
Dim xRow As Integer
Dim xChar As String
Dim index As Integer
Dim arr As Variant
Dim xValue As String
Dim outValue As String
Dim xNum As Integer

xTitleId = "Put Dashes"
Set InputRng = Application.Selection
Set InputRng = Application.InputBox("Range :", xTitleId, InputRng.Address, Type:=8)

xRow = Application.InputBox("Number of characters :", xTitleId, Type:=1)
xChar = Application.InputBox("Specify a character :", xTitleId, Type:=2)

Set OutRng = Application.InputBox("Out put to (single cell):", xTitleId, Type:=8)
Set OutRng = OutRng.Range("A1")

xNum = 1
For Each Rng In InputRng
    xValue = Rng.Value
    outValue = ""
    For index = 1 To VBA.Len(xValue)
        If index Mod xRow = 0 And index <> VBA.Len(xValue) Then
            outValue = outValue + VBA.Mid(xValue, index, 1) + xChar
        Else
            outValue = outValue + VBA.Mid(xValue, index, 1)
        End If
    Next
    OutRng.Cells(xNum, 1).Value = outValue
    xNum = xNum + 1
Next
End Sub

怎么运行的:

  1. 将此代码复制并粘贴为带有 Sheet 的标准模块。
  2. 只要你运行宏,它就会弹出4 输入框一个接一个。

    • 第一个输入框将要求输入源数据范围。

    • 第二步将查找字符数(您需要多少个字符之后 - 符号,在您的情况下是 2)。

    • 第三个将要求插入字符(在您的情况下是 - 符号)。

    • 最后一个将询问输出单元的位置(必须是单个单元)。

  3. 单击“确定”完成。

注意:

此宏功能多样,您可以使用任何字符放在其间,也可以重新设计字符之间的间隔,并且它可以适用于任何类型的数据,包括字母数字、数字或字母。最好的部分是它适用于几乎所有版本的 Excel(2007、2010、2013 和 2016)

相关内容