如何在Excel中拆分字符串?

Gab*_*aby 6 microsoft-excel

如何将第一列中的内容拆分为以下 Excel 中的 3 列:

.plnt201218P52.5    PLNT    201218  P52.5
.cyh201106P8        CYH     201106  P8
.w201106P225        W       201106  P225
.w201106C226        W       201106  C226
Run Code Online (Sandbox Code Playgroud)

Eng*_*ast 7

将其他人的建议结合成一个更完整的答案:

如果您的数据从 开始A1,您可以使用以下公式
B1 =UPPER(MID(A1,2,MIN(IFERROR(SEARCH({0,1,2,3,4,5,6,7,8,9},A1),LEN(A1)))-2))
C1:: =MID(A1,2+LEN(B1),6)
D1: =MID(A1,LEN(B1)+8,LEN(A1))

这假设以下都是正确的:

  • 您的数据以您要丢弃的字符开头: .
  • 第一个数字开始您要提取的 6 位数字
  • 您还想提取该数字左侧和右侧的所有内容(第一个字符除外)
  • 您想将第一个提取的字符串大写

价值观

公式


Gar*_*ent 5

选择要解析的单元格并运行这个简短的 VBA 宏:

Sub ParseWeirdData()
    Dim cell As Range, v As String
    Dim L As Long, i As Long, CH As String
    For Each cell In Selection
        v = Mid(cell.Value, 2)
        L = Len(v)
        For i = 1 To L
            CH = Mid(v, i, 1)
            If IsNumeric(CH) Then
                Exit For
            End If
        Next i
        cell.Offset(0, 1).Value = Mid(v, 1, i - 1)
        cell.Offset(0, 2).Value = Mid(v, i, 6)
        cell.Offset(0, 3).Value = Mid(v, i + 6, 99)
    Next cell
End Sub
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

此代码假定解析中的第二项是六位数字。

这个怎么运作:

该代码查找第一个数字字符。

  • 第一项是第一个数字字符左侧的所有内容
  • 第二项是第一个数字字符和后面的 5 个字符
  • 第三项是第二项之后的所有内容

编辑#1:

避免 VBA 非常简单。关键思想是获取第一个数字的位置. 在E1 中输入:

=MIN(FIND({"0","1","2","3","4","5","6","7","8","9"},A1 & "0123456789",1))
Run Code Online (Sandbox Code Playgroud)

并向下复制(此“帮助器”列给出了第一个数字字符的位置)

B1 中输入:

=MID(A1,2,E1-2)
Run Code Online (Sandbox Code Playgroud)

并向下复制。在C1 中输入:

=MID(A1,E1,6)
Run Code Online (Sandbox Code Playgroud)

并向下复制。在D1 中输入:

=MID(A1,E1+6,99)
Run Code Online (Sandbox Code Playgroud)

并向下复制:

在此处输入图片说明

拥有E列数据使所有其他公式变得非常简单!


小智 0

您应该找到数字第一次出现的位置。然后使用 LEFT 获取第一部分,使用 MID 获取接下来的六位数字,使用 RIGHT 获取字符串的其余部分。您可能还需要 LEN 函数。

要获取 LibreOffice Calc 上第一个数字的位置,您需要在公式中启用正则表达式,然后使用=SEARCH("[0-9]";A1)

在 Excel 上使用类似=MIN(SEARCH({0,1,2,3,4,5,6,7,8,9},A1))