
A1を電話番号用の空欄セル、B1をFAX番号用の空欄セル、C1には会社の郵便番号や住所、代表者の名前、担当者の名前、そのほか文章でいろいろな情報や数字が入っている中に「電話番号03-1234-5678」「FAX03-9876-5432」があるとします。
その文中の電話番号とFAX番号のみをA1とB1のセルにそれぞれ振り分ける関数があればおしえていただけないでしょうか。
文章中の電話番号やFAX番号の文字位置は不確定です。ただし、それぞれの番号の前には必ず「電話番号」「FAX」と表示された後数字が続きます。
No.9ベストアンサー
- 回答日時:
最終確認です。
もしかして、C列文字列にスペースが含まれている可能性もありますので、
とりあえずD2セルに
=SUBSTITUTE(SUBSTITUTE(C2," ","")," ","")
という数式を入れフィルハンドルで下へコピーしておき、D列を参照してみてはどうでしょうか?
(万一C列に全角・半角スペースなどがある場合はスペースなしの文字列になります。)
そしてA1・B1セルにスペースがないというのを確認し、(B1セルは半角大文字のアルファベット)
A2セルに
=bangou($D2,A$1)
という数式を入れフィルハンドルで、列・行方向にコピーしてみてください。
※ これでちゃんと表示された場合はC列にスペースが含まれていた!というコトになりますが、
これでもダメならお手上げです。
どうも失礼しました。m(_ _)m
何度もお手伝いいただき誠にありがとうございました。原因が判明いたしましたのでお礼とともにご報告させていただきます。お伝えしておりました文字列ですが、お知らせしていたものはすべての項目(住所や電話番号、FAX、03-1224など)はあたかも一列に連なっていると思っていたのですが、元データではすべての項目が単語または文節で改行されており、大量のデータのため見易さを優先するため「書式」で「折り返して表示する」を解除しておりました。そのため見た目だけ連続した文字列になっていたのが原因でした。「改行」を削除したことで文字列は一行となり、教えていただきました関数にも反応するようになりました。
何度もお手を煩わせてしまい大変恐縮しております。
本当にありがとうございました。
No.7
- 回答日時:
続けてお邪魔します。
お示しの画像を拝見すると、ちゃんと標準モジュールにユーザー定義関数のコードが記載されていますね。
となると、問題ないように思われます。
今一度、手元のExcelで前回のコードを再確認してみました。
こちらではちゃんと電話番号もFAX番号も表示されました。
前回、当方がアップした配置で、A2セルを選択し
数式バーの左側にある、「fx」のアイコンをクリックしてみてください。
「関数の分類」の右側の▼をクリック → ユーザー定義を選択 → 「bangou」という関数があるはずなのでそれを選択しOK!
関数のダイアログボックスが表示されますので、「myRng」の欄でC2セルを選択し列固定の絶対参照
「myStr」の欄でA1を選択し行固定の絶対参照し → OK!
(通常のワークシート関数を同じやり方です)
これで右へ、下へフィル&コピーするとちゃんと表示されるはずなのですが・・・
次に
>保存したものを開いたときに・・・
に関しては一度保存すると次からはメッセージは表示されないと思います。m(_ _)m
No.6
- 回答日時:
No.2・3です。
No.4さんの補足を拝見するとFAXが全角なのでしょうか?
とりあえずNo.2のコードに少し手を加え、FAXが全角・半角・大文字・小文字関係なく抽出するようにしてみました。
↓の画像のC列はセル内で改行しているだけです。
C列には全角の数字や小文字のアルファベットも混在させています。
ユーザー定義関数のコードを↓に変更してみてください。
(「★」の行に手を加えています)
Function bangou(myRng As Range, myStr As String)
Dim k As Long
Dim buf As String
k = InStr(StrConv(UCase(myRng), vbNarrow), myStr) '//★//
k = k + Len(myStr)
Do While Mid(StrConv(myRng, vbNarrow), k, 1) Like "[0-9 -]" '//★//
buf = buf & Mid(StrConv(myRng, vbNarrow), k, 1) '//★//
k = k + 1
Loop
bangou = buf
End Function
画像ではA1・B1セルに検索文字を入力しています。(B1セルは大文字の半角です)
A2セルに
=bangou($C2,A$1)
という数式を入れフィルハンドルで列・行方向にコピーしています。
※ 保存時は「マクロ有効ブック」として保存する必要があります。m(_ _)m

No.5
- 回答日時:
> 電話番号では#N/A
こちらではその例でも問題なく表示されています。
> FAXでは#VALUE
「FAX」が全角だからでは? 実際のデータに合わせて数式は適宜
変更してください。
No.4
- 回答日時:
Excelのバージョンが分からないので汎用的な方法にしときます。
=MID(C1,FIND("電話番号",C1)+4,LOOKUP(,-SUBSTITUTE(MID(C1,FIND("電話番号",C1)+4,{1,2,3,4,5,6,7,8,9,10,11,12}),"-",""),{1,2,3,4,5,6,7,8,9,10,11,12}))
=MID(C1,FIND("FAX",C1)+3,LOOKUP(,-SUBSTITUTE(MID(C1,FIND("FAX",C1)+3,{1,2,3,4,5,6,7,8,9,10,11,12}),"-",""),{1,2,3,4,5,6,7,8,9,10,11,12}))
No.3
- 回答日時:
No.2です。
こちらの手元のExcelで検証ののちに投稿したので間違いはないと思うのですが・・・
>A1、B1それぞれのセルにも関数を入力しましたが、反応なしです。
F9キーを押下してみてください。(再計算)
それでも何も表示されませんか?
となるとC1セルの文字列内に
「電話番号」とか「FAX」という文字がないコトが考えられます。
特に「FAX」などは大文字小と小文字では別物と判断されてしまいます。
こちらで考えられるとするとこの程度なのですが・・・m(_ _)m
No.2
- 回答日時:
こんにちは!
この質問限定の関数(ユーザー定義関数)を作ってみてはどうでしょうか?
電話番号に関しては携帯電話の場合やハイフンなしの場合にも対応できるようにしてみました。
Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
普通の関数のように使ってみてください。
Function bangou(myRng As Range, myStr As String)
Dim k As Long
Dim buf As String
k = InStr(myRng, myStr)
k = k + Len(myStr)
Do While Mid(myRng, k, 1) Like "[0-9 -]"
buf = buf & Mid(myRng, k, 1)
k = k + 1
Loop
bangou = buf
End Function
画像ではA1セルに
=bangou(C1,"電話番号")
B1セルに
=bangou(C1,"FAX")
という数式をそれぞれ入れています。
※ 電話番号が必ずハイフン入りで10桁と決まっているのであれば
No.1さんのようにMID関数をFIND関数で対応できそうですね。m(_ _)m

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBA初心者です。電話番号の数字の前に0を表示させたいです。 2 2022/12/14 03:58
- Excel(エクセル) 関数EXACT(文字列,文字列)とexcelVBA 3 2022/04/14 15:07
- その他(動画サービス) u-nextの31日間無料体験に申し込むためのdアカウントの電話番号登録について 3 2022/08/27 00:29
- 固定電話・IP電話・FAX 業者からの電話やFAXが多くて大変。減らす方法はありますか? 3 2023/07/14 14:55
- その他(Microsoft Office) エクセルについて教えてください。 2 2022/10/20 14:55
- ホームページ作成・プログラミング FC2ホームページの変更に仕方 4 2022/11/02 11:57
- Excel(エクセル) ある数値に対して、値を返す数式についてです 2 2022/09/13 22:06
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- その他(IT・Webサービス) CICでの情報開示について CICのインターネット開示を利用しているのですが、必要事項を入力後に確定 1 2023/04/04 16:11
- 銀行・ネットバンキング・信用金庫 ゆうちょアプリ。電話番号認証できない。 2 2022/06/10 15:59
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのVBAで集計をしたい
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセルのdatedif関数を使って...
-
【画像あり】オートフィルター...
-
【マクロ】アクティブセルの時...
-
【マクロ】列を折りたたみ非表...
-
他のシートの検索
-
【マクロ】3行に上から下に並...
-
【条件付き書式】シートの中で...
-
ページが変なふうに切れる
-
【マクロ】実行時エラー '424':...
-
9月17日でサービス終了らし...
-
エクセル ドロップダウンリスト...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】【相談】Excelブック...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
貴重なご意見をありがとうございます。
確かに050や0120、市外局番にゼロがない記載漏れなどがあり、すべてが10桁であるとは言えない場合があったことに気づきました。
そこで頂いたとおりにVBEにコピペ(再度Alt+F11で見てもModule1となっておりコピーしたものも表示されている)し終了。
A1、B1それぞれのセルにも関数を入力しましたが、反応なしです。
原因がおわかりになれば教えていただけますでしょうか。
ありがとうございます。
10桁の電話番号に対応できました。
ご教示いただきました関数の他に、11桁の番号や記載漏れなどで9桁になってしまったものがあることを再発見しました。
9桁、10桁、11桁にも対応できるような関数をご存知でしょうか?
ありがとうございます。エクセル2019での対応となります。
いただきました関数を入力しましたところ、電話番号では#N/A,FAXでは#VALUEが返されました。
例えば文字列には「株式会社○○"課係名、役職名本社採用課担当者○○採用担当電話番号03-1234-5678FAX050-9876-5432Eメールxxx@zzzz.co.jp"」が書かれています。
このような文字列の中で電話番号とFAX番号を抜き出したいのですが、通常10桁が11桁であったり、9桁のときもあるようで苦慮しております。この文字列も一例であり、Eメールがなかったり、表現や文字数も変わってきます。ときには、そもそも電話番号やFAX番号がないこともありますが、そのときはエラーが出てくれれば問題のないので、それ以外のときに桁数に関係なく番号を抽出したいのです。
よろしければ、再度お力をおかしいただけますでしょうか。
毎度まいどありがとうございます。
前回同様にご教示いただきましたとおりに関数をコピペいたしました。
当方VBAには明るくないのですが、問題ないと思います。.xlsmで保存もしておりました。
事例の画像と同じ形式で作り直してA2にも関数を入れ、それをB2にフィルハンドしました。
保存後、再度い開いてAlt+F11で開くとコピペの関数も残っています。
しかし、結果は番号が出ず、空白になったままでした。
保存したものを開いたときに、「マクロを有効にする」云々が普段なら入力窓あたりに出てくるのですが、今回はそのようなものが出てこないということは、マクロに関して設定不足のところがあるのでしょうか?
tom04様がつくられたエクセルシートを試してみることは可能でしょうか?
ご協力ありがとうございます。
やってみました。
fxを押しますと「関数の分類」は出てこず、添付画像のように「関数の引数」が出てまいります。
正確にはわかりませんが、ここには「=””」となっており、イコールのあとに本来なら電話番号がでているはずなのかな?と感じています。
でも、原因は全くわかりません。
現状、このような状態です。
なにか原因なるものに心当たりはございませんでしょうか。
よろしくお願いいたします。