Excel公式 - 仅删除' odd'从连接的单元格中定位数字字符串

时间:2015-05-16 15:06:02

标签: excel excel-formula

我的请求:Excel公式删除每个'偶数'定位的字母或数字字符串,包含在一个单元格中,以分号(;)分隔,所以只有' 奇数'定位的数字\文本字符串保留。

我有一些数据,有一个可怕的混合值单元格 ......啊啊。我希望一个公式可以从一个由一系列代表“产品代码”的数字组成的单元格中删除每个“其他!”值的字符串。

详细说明:

我的有问题的单元格位于列[B]中。典型的单元格内容为[B2],如下所示:534222;#212;#634196;#331;#538015;#75

在此示例中,我的“产品代码”是:534222; #634196; #538015 ...... ..我想要摆脱的随机数是:#212; #331; #75为了清楚,并不总是这些数字,它们可以是任何数字。

我注意到随机数出现在我的“产品代码”之间,并且始终是第2,第4,第6 ......等。字符串中的数字。

除了在整个价值观中的位置之外,数字没有模式......总是第2,第4,第6,第8等。即in和' 甚至 '位置,每个值用分号(;)分隔,前面有一个井号(#

我想要“产品代码”,它似乎出现在“奇数”排名位置第1,第3,第5,第7等... 。留下来的随机数字。

额外信息: 我仍然希望我的“产品代码”划分用逗号(,)或分号(;),而不是关于哈希符号(#),它可以留下或去。

2 个答案:

答案 0 :(得分:1)

尝试此功能:

Function CleanEvenItems(value As String) As String

    spl = Split(value, ";")
    For i = 0 To UBound(spl) Step 2
        CleanEvenItems = CleanEvenItems & spl(i) & ";"
    Next

End Function

并像这样使用

= CleanEvenItems(B2)

答案 1 :(得分:0)

在标准模块中输入以下 UDF()

Public Function KeepOdd(rin As Range) As String
   Dim Flip As Boolean
   ary = Split(rin.Text, ";")
   Flip = True
   KeepOdd = ""
   For Each a In ary
      If Flip Then
         KeepOdd = KeepOdd & ";" & a
         Flip = False
      Else
         Flip = True
      End If
   Next a

   KeepOdd = Mid(KeepOdd, 2)
End Function

并且 A1 中的数据,在 B1 中输入:

= KeepOdd(A1)

enter image description here

用户定义函数(UDF)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从Excel使用UDF:

      = KeepOdd(A1)

      要了解有关宏的更多信息,请参阅:

      http://www.mvps.org/dmcritchie/excel/getstarted.htm

      http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

      有关UDF的详细信息,请参阅:

      http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

      必须启用宏才能使其生效!