Excel 如何从单元格中间提取某些字符并将其放置在末尾
我正在清理一些数据。其他人把产品的大小放在细胞的中间,当它应该在末端时。这些尺寸从XXS到XXL不等。还有一些其他尺寸,如1inX6ft。这些显然有更多的变化(比如某些英寸乘以某些英寸或某些英寸乘以某些英尺),因此,虽然提取所有尺寸类型并将它们放在末尾的公式是理想的,但我至少需要得到XXS-XXL可能尺寸的公式(假设我可以使用类似{XS,SM,M,L,XL,XXL}在给出的公式中,如果前者不可能 以下是我的一些例子: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
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。