2016-03-19 10 views
0

私はExcelの数式の分野におけるnewbeeと私はランダムなテキストの文字列から電話番号を抽出する必要があり、複雑な式、でお願いします。これは、文字列ランダム複雑なテスト文字列から10のまたは11桁の電話番号を抽出する式

例の修正形式は文字列をオフに設定されていません。

Dring to data add9724516002 
add 08107936777 to me pler 
8000069633 plz add. Me 
9000088106 mujhe bhi add karo dosto 

私はすでに多くの数式を試してみましたが、何も動作するようには思えません。固定唯一のことは、数の長さである、それは(最初の0を含む)、10桁または11のいずれかでなければなりません

+1

これは "私にコードを渡す"サイトではありませんが、何がうまくいかなかったのですか?技術的には、電話番号は最大15桁(国コードが含まれているかどうかわからない)で10未満になることがあります。人々はダッシュ、スペース、括弧などの書式を含む可能性があるため、 。あなたは、すべての数字を抽出しそこから行くのが良い時間を持つかもしれません。 –

+0

あなたの以前の質問[列からパターンを抽出](http://stackoverflow.com/questions/32680447)を再訪して、そこにあるRegExベースのソリューションのいくつかを調べることをおすすめします。 *熱狂的なプログラマ*として、それは歓迎すべき課題です。 – Jeeped

+0

複数の電話番号を持つようにテキストが表示されます。その場合、vbaコードを抽出する必要があります。さらに重要なのは、必要な場所に便利な方法で配置することです。 – MikeC

答えて

1

あなたはVBA

経由で正規表現を使用することができます(これは参照、いつかトラックダウン式オプションとしてExcelに来ているようだuservoice

コード

Function GetCode(strIn As String) As String 
Dim objRegex As Object 

Set objRegex = CreateObject("vbscript.regexp") 
With objRegex 
    .Pattern = "\d{10,11}\b" 
    If .test(strIn) Then 
    GetCode = .Execute(strIn)(0) 
    Else 
     GetCode = "no match" 
    End If 
End With 
End Function 
0

それらはすべてあなたが上で提供されている文字列のように見える場合は、列にテキストを使用することができます。これらの文字列がすべてA1:A4にあるとします。

  1. すべての4つのセル
  2. データを選択 - あなたは今、大きなを持つことになり、別の値に "列にテキスト"
  3. 区切り
  4. 使用 "空間"
  5. 完了

をお使いの携帯電話番号の大半を引き出し、それはこのようになります。

Image Link

(すべての列を独自のデータセットにする行を追加しました.1,2,3,4,5、および6列。私はまた別の列を追加しました列A、ソートのG5:これは、A1を選択し、)

次後の段階で有用であろう。

  1. をクリックして「挿入 - 表」
  2. は「私のテーブルには、ヘッダーを持っている」
  3. OK

あなたの範囲を使用すると、昇順を介してデータを並べ替えることができることを意味し、今の表です。私はあなたが並べ替える数百の文字列を持っていると仮定しています。昇順でソートすると、すべての数字が最初に表示されます。

Image Link 2 あなたがあなたの元ラインナップに戻すしたい場合:私は、実際のデータの最初の列をソートしてきた、と2つの電話番号が、私は引き出すことができます上部にある下のPICで

データの、私はこれはVBAを避けるために良い回避策です願う「昇順」

にソート列をクリックしてください。あなたは、電話番号のすべてが、おそらくかなりの部分を取得することはできません。電話番号のすべてが必要な場合は、列C:Gをコピーして列Aの末尾に貼り付け、すべてを一度に並べ替えることもできます。

添付数字と文字を持っている文字列が類似している場合は、英数字の文字列から数値を引き出すために、左右の式の中に見ることができ

関連する問題