如何将excel某单元格中的长宽高,单独的提取到某一行。

麻烦大神帮忙解决一下。

  看下边例子,B2公式为=TRIM(MID(SUBSTITUTE($A2,"*",REPT(" ",99)),COLUMN(A2)*100-99,99)),数组公式,三键结束,横向拖动公式得到宽与高,下拉计算其他数据。

  再列举一种情况,看下图,B1公式=-LOOKUP(1,-MID($A2,FIND(B$1,$A2)+1,ROW($1:$9)))。

  

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-07-24

VBA代码如下(附件是文件样本):

Function mm(ByVal rg As Range, G As Integer) As Double
Dim regExp As Object, m, mAry
Set regExp = CreateObject("VBscript.regExp")
With regExp
    .Global = True
    .Pattern = "\d|\*|\."
    For Each m In .Execute(rg.Value)
        s = s & m
    Next
End With
mAry = Split(s, "*")
mm = mAry(G - 1)
End Function


本回答被提问者采纳
第2个回答  2015-02-12

会使用VBA吗?

如果会的话把下方代码添加到模块中~

Function GetLWH(ByVal cell As Range, ByVal kind As Integer)
    Dim oRegExp As Object
    Dim oMatches As Object
    Set oRegExp = CreateObject("vbscript.regexp")
    With oRegExp
        .Global = True
        .IgnoreCase = True
        .Pattern = "[^0-9.][0-9.]+"
        Set oMatches = .Execute(cell.Formula)
    End With
    If kind > oMatches.Count Then
        s = oMatches(oMatches.Count - 1)
    Else
        s = oMatches.Item(kind - 1)
    End If
    GetLWH = Right(s, Len(s) - 1)
    Set oRegExp = Nothing
    Set oMatches = Nothing
End Function

再在表中如下输入:

C1=GetLWH(B1,1)

D1=GetLWH(B1,2)

E1=GetLWH(B1,3)


然后下拉填充

第3个回答  2015-02-12
C2输入公式=TRIM(MID(SUBSTITUTE(B2,"*",REPT(" ",10)),FIND(" ",B2),5))
D2输入公式=TRIM(MID(SUBSTITUTE(B2,"*",REPT(" ",10)),FIND(" ",B2)+10,5))
E2输入公式=SUBSTITUTE(SUBSTITUTE(MID(B2,FIND("*",B2)+1+LEN(D2)+1,50),"CM",""),"MM","")
选中公式单元格,下拉公式即可。
第4个回答  2015-02-12
选中B列,数据——分列:分割符号选空格。然后再分列,分割符号选*,最后查找CM替换为空
相似回答