如何从单元格的中间提取某些字符并将其放置在末尾

时间:2019-05-01 14:03:02

标签: excel excel-formula

我正在清理一些数据。有人将产品尺寸放在单元格的中间,而应该放在最后。这些尺寸范围从XXS-XXL。还有一些其他尺寸,例如1inX6ft。这些显然有更多的变化(例如,某些英寸乘某些英寸或某些英寸乘某些英尺),所以虽然提取所有大小类型并将其放在末尾的公式是理想的,但我至少需要得到一个公式XXS-XXL可能的大小(假设如果无法使用,则可以在给定的公式中使用{XS,SM,M,L,XL,XXL}之类的东西。

以下是我所拥有的一些例子:

RC D CLP CLR SM PNK TRTN
RC D CIRQUE S HRN XXS CORAL
RC D LEASH 3/4inX6ft FOX
RC D CLP CLR LG BEAR CAMP
RC D BARK NOTES 3/4in FRIENDLY

以下是我需要的一些示例:

RC D CLP CLR PNK TRTN SM
RC D CIRQUE S HRN CORAL XXS
RC D LEASH FOX 3/4inX6ft
RC D CLP CLR BEAR CAMP LG
RC D BARK NOTES FRIENDLY 3/4in

到目前为止,我只是剪切和粘贴。我考虑过为不同尺寸的XS-XXL录制宏,但是我认为这不会更快,因为我控制+ v在剪切后将其粘贴到末尾。

1 个答案:

答案 0 :(得分:4)

这是一个用户定义的函数,该函数迭代“单词”以查找匹配项并将其移到后面。它使用Like尝试按模式查找其他度量。

您可以将其他样式/单词添加到Array来对其进行移动。

Function MoveToBack(str As String) As String
    Dim ExArr() As Variant
    ExArr = Array("XXS", "XS", "SM", "M", "LG", "XL", "XX", "*#in*", "*#ft*")

    Dim strArr() As String
    strArr = Split(str)

    Dim last As String
    last = ""

    Dim temp As String
    temp = ""



    Dim strEach As Variant
    For Each strEach In strArr
        Dim hre As Boolean
        hre = False

        Dim i As Long
        For i = LBound(ExArr) To UBound(ExArr)
            If strEach Like ExArr(i) Then
                hre = True
                Exit For
            End If
        Next i

        If hre Then
            last = strEach
        Else
            temp = temp & strEach & " "
        End If
    Next strEach

    MoveToBack = Application.Trim(temp & last)

End Function

enter image description here