- ベストアンサー
セル内に全角文字と隣り合っている電話番号を抜きだす
エクセルで、以下のような記述のセルが数万行あります。 (一つのセルに「業者名電話番号内線番号」) 業者A03-1234-1234EXT1234 業者B03-2234-2234EXT2234 業者C03-3334-3334EXT3334 : : 電話番号だけ抜き出したいのですが、うまくいきません。 エディタなど使ったほうがよろしいのでしょうか。 なにとぞご教授お願いします。
- みんなの回答 (2)
- 専門家の回答
その他の回答 (1)
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! データはA列2行目からあり、電話番号は「0」から始まり、ハイフン付きで12文字だとしての一例です。 電話番号より前には数値はないという前提です。 (仮に社名に数値がある場合、関数では正確な表示ができなくなります。) B2セル以降に12桁(ハイフン付き)の番号を表示させる方法としては、関数で行う場合は B2セルに =MID(A2,MATCH(TRUE,ISNUMBER(MID(A2,ROW($A$1:$A$30),1)*1),0),12) (A列セル内は30文字まで対応できるようにしています) これは配列数式になりますので、この画面からB2セルにコピー&ペースト後、数式バー内で一度クリック! 編集可能になりますので、Shift+Ctrlキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 これをオートフィルで下へコピーで「0」から始まる文字12文字が表示されると思います。 他の方法としてはVBAになりますが・・ 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので ↓のコードをコピー&ペーストしてマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub test() 'この行から Dim i, j As Long Dim str As String For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row For j = 1 To Len(Cells(i, 1)) str = Mid(Cells(i, 1), j, 12) If str Like "0*" Then '←電話番号は半角数字という前提です。 Cells(i, 2) = str End If Next j Next i End Sub 'この行まで こんな感じではどうでしょうか?m(__)m
お礼
ありがとうございます。 関数は希望通りの動作を確認できました。 マクロは後日試してみます。
お礼
ありがとうございます。 うまく電話番号と分けることができました。