
No.5ベストアンサー
- 回答日時:
>本コードは主にどんなステートメントを使っているのでしょうか?
>いつも見るコードからは想像が出来ないです
正規表現を使用しています。
詳細は「VBA 正規表現」 で検索してください。
https://www.sejuku.net/blog/33541
https://codezine.jp/article/detail/1655
https://qiita.com/kisa/items/74085046abc6c0ac2607
正規表現は言語毎に多少の違いがありますが、
基本的な考え方は一緒なので、正規表現を覚えておいてください。
提示したスクリプトを解説すると
Public Function Get_Number(ByVal tel_str As String) As String
Dim reg As Object
Dim matches As Variant
Get_Number = ""・・・①
Set reg = CreateObject("VBScript.RegExp")・・・②
reg.Pattern = "(^|\D+)(\d{2}-\d{4}-\d{4}-\d)(\D+|$)"・・・③
Set matches = reg.Execute(tel_str)・・・④
If matches.count = 0 Then Exit Function・・・⑤
Get_Number = matches(0).submatches(1)・・・⑥
End Function
①戻り値を空白("")に設定
②正規表現用オブジェクトの作成
③正規表現のマッチパターンを設定(ここがポイントです)
④マッチの実行を行い、結果をmatchesに格納
⑤マッチしないなら終了
⑥マッチした部分の
●●-●●●●-●●●●-●
の部分を取り出し、戻り値に設定する
丁寧な解説ありがとうございます
大変、難しい論点だと思いましたが
難しいとやる気もでますね
ご指南、きっかけありがとうございます
No.4
- 回答日時:
ユーザー定義関数になります。
以下のマクロを標準モジュールに登録してください。
この関数に文字列を渡すと、ハイフン付き数字が返ってきます。
添付図は、この関数の使用例です。
A列に文字列があるとき、B列にハイフン付き数字を抜き出す例です。
B1へ
=Get_Number(A1)
と入力し、オートフィルで下の行へコピーします。
該当数字がない場合は、空白("")が返ります。
Public Function Get_Number(ByVal tel_str As String) As String
Dim reg As Object
Dim matches As Variant
Get_Number = ""
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "(^|\D+)(\d{2}-\d{4}-\d{4}-\d)(\D+|$)"
Set matches = reg.Execute(tel_str)
If matches.count = 0 Then Exit Function
Get_Number = matches(0).submatches(1)
End Function

お返事ありがとうございます
うまく、出来ました。大変、感動しています
本コードは主にどんなステートメントを使っているのでしょうか?
いつも見るコードからは想像が出来ないです
勉強のヒントになるステートメントやメソッドがあれば
教えて下さい
宜しくお願いします
No.3
- 回答日時:
どのようなパターンで数値を抜き出すのかという事が不明です。
>●●-●●●●-●●●●-● 形式の数値を抜き出したいです
という条件なら
あいう90-1234-2508-2あいうえお
の場合は
⇒ 90-1234-2508-2
になると思うのですが、何故
⇒ 10-1234-2508-2
になるのでしょうか?
No.2
- 回答日時:
関数REGEXEXTRACTを使用します。
下記ページの「例1: 電話番号の抽出」が参考になります。https://sakata-engineer.com/2024/05/22/excel-%E3 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
Excelの関数内の文字を一括変換する方法を教えてください。 例えば、 大阪支店のシートの4月の売上
Excel(エクセル)
-
条件付書式設定にて、本日の日付を条件として、2行分にセルに色を付けるには?
Excel(エクセル)
-
エクセルに、105と入力すると、勝手に100で除算して1.05になってしまうのは何故でしょうか? ち
Excel(エクセル)
-
-
4
【マクロ】WEBシステムから保存ではなく、開いたExcelデータを変数に入れる事が出来る?
Excel(エクセル)
-
5
Excelの新しい空白のブックを開く度に 画像のような警告が出てきます ブック59と書かれていますが
Excel(エクセル)
-
6
重複しない値を抽出したい
Excel(エクセル)
-
7
Excel 複数のセルが一致するときに網掛けをする式は作れますか
Excel(エクセル)
-
8
マクロOn Error GoTo ErrLabelとOn Error Resume Next教えて
Excel(エクセル)
-
9
【エクセル】期限アラートについて
Excel(エクセル)
-
10
Excelについての質問です 並べ替えの機能で社員を50音順に並べ替えたいのですが 名前の横に社員番
Excel(エクセル)
-
11
エクセルについてどう関数を使えばいいか教えてください。
Excel(エクセル)
-
12
findメソッドで、10:00:01 を検索をして、メッセージボックスにセル番地と時間が表示できない
Excel(エクセル)
-
13
エクセルでコーピして貼り付けるがバラバラになり 行の高さも、列の幅も合いません。 どうしたらいいので
Excel(エクセル)
-
14
9月17日でサービス終了らしいのですが、今までのようなエクセルの質問や相談はどこですればいい?
Excel(エクセル)
-
15
excelで日付関数の文字列変換の前にスペースを入れる方法をお教え下さい。
Excel(エクセル)
-
16
エクセルのdatedif関数を使って、年齢と月齢を入力しました。 関数を入力して、問題なく使えたので
Excel(エクセル)
-
17
エクセルの循環参照、?
Excel(エクセル)
-
18
派遣会社とかハローワークとかがやってるパソコン研修(主にエクセル)って受けといた方がいいんでしょうか
Excel(エクセル)
-
19
空白セルに斜線(罫線)
Excel(エクセル)
-
20
勤怠表について ABS、TEXT関数の使い方について教えて下さい
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
【マクロ】数式を入力したい。...
-
【マクロ】excelファイルを開く...
-
エクセルの関数について
-
【マクロ】変数に入れるコード...
-
エクセルのリストについて
-
【マクロ】左のブックと右のブ...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
【マクロ】元データと同じお客...
-
Office2021のエクセルで米国株...
-
【マクロ】【配列】3つのシー...
-
【画像あり】オートフィルター...
-
vba テキストボックスとリフト...
-
他のシートの検索
-
【マクロ画像あり】❶1つの条件...
-
エクセルの複雑なシフト表から...
-
【関数】=EXACT(a1,b1) a1とb1...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報