从列表中提取特定文本到列

时间:2018-02-09 22:15:31

标签: excel excel-formula

在Excel中,我试图从单元格中提取某些数据并填充相邻列中的另一个单元格。让我试着总结一下这个问题:

我有大约5000个行条目。

  

A1 ------混合描述50P 40C 10N混合描述

我想提取材料成分

  

B1 ------- 50%涤纶40%棉10%尼龙

A1描述中的50P 40C 10N部分不是标准的,可以是50P40C10N,70P / 20W / 10N,40P + 60C + 10E。此外,据说材料组合来自20种材料成分(醋酸纤维,丙烯酸,棉,尼龙....)的列表

2 个答案:

答案 0 :(得分:0)

您可以使用功能执行此操作。下面将遍历源字符串,保留数字,并根据所选字符(P | W | N | C | E)将附加所选的文字,即"%Polyester"。要使用,请在列中选择您想要新值的单元格,然后从源列中选择单元格。

    Public Function ParseMaterials(r As Range) As String
        vOut = ""
        vStr = r.Formula
        For i = 1 To Len(vStr)
            If Mid(vStr, i, 1) >= "0" And Mid(vStr, i, 1) <= "9" Then
                vOut = vOut & Mid(vStr, i, 1)
            Else
                If Mid(vStr, i, 1) = "P" Then
                   vOut = vOut & "% Polyester "
                End If
                If Mid(vStr, i, 1) = "C" Then
                   vOut = vOut & "% Cotton "
                End If
                If Mid(vStr, i, 1) = "N" Then
                   vOut = vOut & "% Nylon "
                End If
                If Mid(vStr, i, 1) = "W" Then
                   vOut = vOut & "% Wool "
                End If
                If Mid(vStr, i, 1) = "E" Then
                   vOut = vOut & "% Ermine "
                End If
            End If
        Next
        ParseMaterials = vOut
    End Function

答案 1 :(得分:0)

这很有效,但它非常残酷...... 小心,因为Find()函数依赖于大写字母... - 避免描述中的“n”...

=MID(A1,FIND("P ",A1,1)-2,2)&"% Polyester "&MID(A1,FIND("C ",A1,1)-2,2)&"% Cotton "&MID(A1,FIND("N ",A1,1)-2,2)&"% Nylon"

显示工作的图像: enter image description here