我有几千行数据,我试图从中提取某些信息并将其放入自己的单元格中。
我有一列数据看起来像这样:
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)
第一个和最后一个数字可以使用您提到的LEFT
和RIGHT
函数。
最后的数量:
=RIGHT(C8,LEN(C8)-FIND("x",C8,FIND("x",C8)+1))