如何从单元格中间取出某些字符并将它们放在最后

问题描述 投票:-1回答:1

我正在清理一些数据。有人把产品的大小放在单元格的中间,当它应该在最后。这些尺寸范围从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在剪切后粘贴尺寸。

excel excel-formula
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.