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

Excel 如何从单元格中间提取某些字符并将其放置在末尾,excel,excel-formula,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

我正在清理一些数据。其他人把产品的大小放在细胞的中间,当它应该在末端时。这些尺寸从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将大小粘贴到末尾。

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

您可以将其他模式/单词添加到
数组中
,也可以移动它们

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

这在vba中可能比公式更有效。公式将非常长且难以控制。除了(XS、SM、M、L、XL、XXL)之外,您还有什么其他识别尺寸的规则?我在另外两个例子中看到了一些数字。我们能假设一个有数字的单词也是一个大小吗?嘿,JNevill。是的,任何有数字的单词都是一个大小。例如,一条皮带可能是1inX6ft。我还忘了加上一些数字:盎司(盎司)、克(克)、立方英寸(立方英寸)、磅(磅)、英寸(英寸)、迷你、巨型、CT(计数),有些只有一个数字(比如7号的7),L(升)。不幸的是,有些同时包含这两种。例如,一个单元格可能有2CT MD或4CT 4oz。在这种情况下,大小和重量,特别是重量,总是在最后;CT名称可以保留在原来的位置。嘿,斯科特。这没问题,我使用VBA没有任何问题。我只说了公式,因为这是我更习惯于在wi工作的原因成功了,再次感谢你的帮助,斯科特!你总是一个救命恩人!我想再次检查一下-如果我忘记了一个尺码名称,我是否可以简单地将它添加到第三行的括号中(在ExArr=Array之后)?如果是的话,我总共可以有多少个尺码名称?另外,我可以添加“L”吗对于L或是否会将任何包含字母L的单词移动到单元格的末尾?您可以随时添加,但不确定限制。但它应该足够大。没有通配符的项目将查找精确匹配的项。好的,谢谢。是否需要在“in”大小之前和之后添加*?通配符不意味着应该包括“in”前后连接的任何内容吗?此外,我刚刚有两个单元格,我在其中输入了在VBA中创建的公式,出于某种原因,它完全删除了单元格的大小部分。一个例子是NDC/D/无异味欺负12英寸Skinny,它使用公式变成了NDC/D/无异味欺负Skinny。