如何从细胞中提取信息



我有几千行数据,我试图从中提取某些信息并将其放入自己的单元格中。

我有一列数据看起来像这样:

1@48x50x38 2@50x29x48 1@68x29x58 1@50x21x68

第一个数字是我可以很容易地用LEFT公式拉出来的量。我还需要拉出其他一组数字放在自己的单元格中,但不知道如何从字符串的中间拉出这些数字。

我希望它看起来像这样。

A B C D 1 48 50 38 2 50 29 48 1 68 29 58 1 50 21 68

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

Sub convertt()
    For Each r In Selection
        V = r.Value
        If V <> "" Then
            ary = Split(V, "@")
            bry = Split(ary(1), "x")
            r.Value = ary(0)
            r.Offset(0, 1) = bry(0)
            r.Offset(0, 2) = bry(1)
            r.Offset(0, 3) = bry(2)
        End If
    Next r
End Sub

编辑# 1:

这个版本将不区分大小写:

Sub convertt()
    For Each r In Selection
        V = r.Value
        If V <> "" Then
            ary = Split(V, "@")
            bry = Split(LCase(ary(1)), "x")
            r.Value = ary(0)
            r.Offset(0, 1) = bry(0)
            r.Offset(0, 2) = bry(1)
            r.Offset(0, 3) = bry(2)
        End If
    Next r
End Sub

MID函数可用于使用起始值和长度值提取字符串的任意部分。然而,我怀疑你的问题是如何找到开始和长度值。

FIND函数将提供此功能,因此您可以将其用作MID

的参数。

因此,要获得@符号之后的第一个数字,您将使用(假设单元格是C8):

=MID(C8,FIND("@", C8)+1,FIND("x",C8)-FIND("@", C8)-1)

其他中间数可按如下方式提取:

=MID(C8,FIND("x", C8)+1,FIND("x",C8,FIND("x",C8)+1)-FIND("x", C8)-1)

第一个和最后一个数字可以使用您提到的LEFTRIGHT函数。

最后的数量:

=RIGHT(C8,LEN(C8)-FIND("x",C8,FIND("x",C8)+1))

最新更新