2016-11-18 5 views
0

これは、ここのコンピュータウィズのすべてのための簡単なものかもしれません!私はEXCELテキストボックスに文字列を抽出したいと思います。データセットはちょっと混乱しています。スペースや文字、その他のテキストは必要ありません。たとえば:データスクラブインエクセル

私は「ABC ABCABC12345D1」

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

のうち、ABC12345D1を取る必要があるしかし、それはちょうど私が出て抽出する必要があり、識別子の一つです。ドラッグして残りの列にプルダウンできる式があることを願っています。

したがって、ABCABC12345D1は

で作られている_ _ _最初の3つの文字は

_ _ _ _ _第2の部分は、ロケーションタグ

_ _と少なくともある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とは限りません。正規表現では、何を探すか宣言して、6桁、5桁、1文字、1桁の順番で正規表現を書いています。もしそれが見えたら、どんな文字か数字が一致しても、それは一致します – Andreas