2016-11-18 50 views
0

对于所有电脑来说,这可能是一个简单的方法!我想在EXCEL文本框中提取一串字符。数据集很混乱,有空间,字符和其他我不需要的文本。例如:EXCEL中的数据清理

我需要ABC12345D1出“ABC ABCABC12345D1”

       "ABC,ABCABC12345D1" 
          "KOhn!ABCABC12345D1" 
          "ABCABC12345D2 ABCABC12345D1" 
          "ABCABC12345D1ABCABC12345D1" 
          "MCDONALDABCABC12345D1" 

,但是这仅仅是标识符我把解压出来的一个。我希望有一个公式可以拖放到列的其余部分。

所以,ABCABC12345D1由

_ _ _前三个字符是一个ID

_ _ _ _ _第二部分是位置标签

_ _和至少过去是开启还是关闭(如果能够解压,我可以活下去)

现在我试着采取正确的8或10个字符,并把所有的空间都拿出来,但是有没有更清晰的方法拉这个数据?

回答

0

正则表达式?

Function Regex(Cell) 
    Dim RE As Object 

    Set RE = CreateObject("vbscript.regexp") 

    RE.Pattern = "(\w{6}\d{5}\w\d)" 
    RE.Global = True 
    RE.IgnoreCase = True 
    Set Matches = RE.Execute(Cell) 

    For Each res In Matches 
     Regex = Regex & "," & res 
    Next res 
    Regex = Mid(Regex, 2) 
End Function 

用ALT + F11打开VBA编辑器。
插入 - >模块 将上面的代码复制粘贴到模块窗口中。 关闭VBA编辑器。

在Excel工作表中写入=Regex(A1)来激活该功能。

enter image description here

+0

谢谢!有没有更简单的方法来做到这一点?我假设这是VBA? –

+0

是的,这是VBA。没有看到你没有加入VBA。对不起,我可以让它成为UDF?这样你可以用它作为公式。如果文本在A1中,你应该可以在B1中写入'REGEX(“A1”)',它会返回你想要的部分。你觉得可以吗? – Andreas

+0

你有必要使用正则表达式(我猜)它并不总是ABCABC ...正则表达式你声明要寻找什么,我按顺序写了六个字符,五个数字,一个字符和一个数字的正则表达式。如果它看到,无论字符或数字是否匹配 – Andreas