删除Excel中的数字前的文本

时间:2014-09-17 13:55:55

标签: excel

我必须在Excel中的数字之前或之后删除一些文本,有时两者都删除。即。

Dr Smith Surgery 154 which ever road

我需要将其拆分为Dr Smith Surgery 154which ever road

现在有些记录只有154 which ever road

任何人都可以提供建议吗?我有几千条记录要调整,手动这样做的想法让我想哭。

2 个答案:

答案 0 :(得分:0)

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

Sub Parser()
    Dim s1 As String, r As Range, _
        L As Long, i As Long
    For Each r In Selection
    s1 = r.Text
    L = Len(s1)
    For i = L To 1 Step -1
        If IsNumeric(Mid(s1, i, 1)) Then
            r.Offset(0, 1).Value = Left(s1, i)
            r.Offset(0, 2).Value = Mid(s1, i + 1)
            GoTo dun
        End If
    Next i
dun:
    Next r
End Sub

最后一位数字右侧的所有内容都会放在 C 列中。其他所有内容都会放在 B

列中

例如:

enter image description here

答案 1 :(得分:0)

假设您的值在A1中。 假设您在B1中创建一个辅助列。 C1列是左侧的公式。 D1列是右侧的公式。

在B1中,用保证文本不包含的字符替换所有数字,然后获取该字符的第一个实例的位置。在这里我选择了管道(" |")。 B1的公式:

=SEARCH("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, 1, "|"), 2, "|"), 3, "|"), 4, "|"), 5, "|"), 6, "|"), 7, "|"), 8, "|"), 9, "|"), 0, "|"))

C1的公式:

=IFERROR(LEFT(A1,B1- 1), A1)

D1的公式:

=IFERROR(MID(A1,B1, LEN( A1)-B1+1), "")

如果您选择不使用辅助列,您可以使用以下内容创建两个巨大的厄运公式:

左侧公式:

=IFERROR(LEFT(A1,SEARCH("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, 1, "|"), 2, "|"), 3, "|"), 4, "|"), 5, "|"), 6, "|"), 7, "|"), 8, "|"), 9, "|"), 0, "|"))- 1), A1)

右侧公式:

=IFERROR(MID(A1,SEARCH("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, 1, "|"), 2, "|"), 3, "|"), 4, "|"), 5, "|"), 6, "|"), 7, "|"), 8, "|"), 9, "|"), 0, "|")), LEN( A1)-SEARCH("|",SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1, 1, "|"), 2, "|"), 3, "|"), 4, "|"), 5, "|"), 6, "|"), 7, "|"), 8, "|"), 9, "|"), 0, "|"))+1), "")