我有几千行数据,我试图从他们自己的单元格中提取某些信息。
我有一列数据看起来像这样:
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
非常感谢任何帮助。
答案 0 :(得分:1)
MID
函数可用于使用start和length值提取字符串的任意部分。
但是我怀疑你的问题是如何找到起始值和长度值。
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))
答案 1 :(得分:1)
选择要解析的单元格并运行此小宏:
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