
No.1ベストアンサー
- 回答日時:
VBAの正規表現では一発ではできないと思います。
数字じゃないもの、数字が9桁以上連続しているものを一度スペースに置換してから、数字8桁のものだけを抽出するなどしてみては。
Dim regex As Object
Set regex = CreateObject("VBScript.RegExp")
regex.Global = True
Dim text As String
text = "z2z12345678z0z0z87654321z1z1z123456789012z1z1"
regex.Pattern = "[^0-9]|[0-9]{9,}"
text = regex.Replace(text, " ")
Dim matches As Object
regex.Pattern = "[0-9]{8}"
Set matches = regex.Execute(text)
For i = 0 To matches.Count - 1
MsgBox matches.Item(i)
Next
No.4
- 回答日時:
横からすみません。
No3の方へ
12345678a23456789
の文字列の場合、12345678だけしかマッチしないようです。
今回の場合、No1の方が正解のような気がします。
No.3
- 回答日時:
こんにちは
「正規表現検索ダイアログアドイン」は存じませんので、どの程度のパターン表現が可能なのか不明ですが、一般的な正規表現が可能とするなら
/(?:^|\D)(\d{8})(?:\D|$)/g
というパターンで抽出が可能と思います。
(実際のところ書式は知りませんので、若干異なるかも知れませんし、使えない記述が含まれているかも知れません)
一方で、
>Excelのセルに前記のような文字列が入っている状態です。
>数字8桁だけを別列のセルに書き出せれば、なお良いです。
とのことなので、セルに表示するので良ければ、該当文字列を抽出するユーザ定義関数を作成してみました。
使い方は、
=extrct(対象文字列 [, 序数])
という感じです。
・対象文字列: 抽出の元となる文字列(当然、セル指定でも良い)
・序数 : 複数ヒットする場合に序数番目の値を返す(デフォルトは1)
例えば、A1セルにご例示のような文字列があるとして、結果を列記したいセルに
=extrct($A$1, ROW(A1))
を代入して、下方にフィルコピーすると(今回は2つですが…)、各セルに
12345678
87654321
と表示されます。(3番目以降は、該当がないので空白が返されます)
事前に、以下のユーザ定義関数を、VBAの標準モジュールにコピペしておく必要があります。
Function extrct(ByRef s As String, Optional ByRef n As Long = 1) As String
Dim reg As Object, match As Object
extrct = ""
If n < 1 Then Exit Function
Set reg = CreateObject("VBScript.RegExp")
reg.Pattern = "(^|\D)(\d{8})(\D|$)"
reg.Global = True
Set match = reg.Execute(s)
If n <= match.Count Then extrct = match(n - 1).SubMatches(1)
End Function
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルで重複データから重複を削除して指定の列に抽出したい 11 2022/05/11 11:26
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- その他(Microsoft Office) Outlookメール 連絡先の検索について 〈 ご説明 〉 Windows PC の Outlook 1 2022/09/23 14:43
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- Excel(エクセル) Excel 文字を抽出したい 4 2022/06/22 11:43
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- くじ・懸賞 ナンバーズ4とか毎日ストレートが30本前後当選していますが、本当に買って当選してると思います? スト 2 2023/04/04 08:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
pip --versionがエラーになる
-
数学、プログラミング、物理、...
-
画像生成AIのプロンプトの作り...
-
pythonの実行に関する質問
-
初心者powershellのPS1ファイル...
-
OS入ってる機器のソフト・アプ...
-
pythonについて(初心者です)
-
Python... 環境設定 初心者です...
-
マイクロソフトがvbを捨てたの...
-
PythonのTkinter詳しい方へ。画...
-
パイソンのソースコードをChatG...
-
Python 3.12.2 か一番最新のパ...
-
CSVファイルの複数行削除
-
COPYコマンドで、最後に1文字...
-
以下の技能を無料で受講できる...
-
ネットワークフォルダの中身を...
-
VBAでパワーシェルを実行したい...
-
HTMLソースが表示のページのも...
-
uwscでPauseキーが押されたら、...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vba クリップボードクリアにつ...
-
趣味がプログラミングだと言っ...
-
pythonについて(初心者です)
-
プログラミング言語のバージョ...
-
AIがプログラムする時代のプロ...
-
MOVEコマンドでサブフォルダー...
-
画像生成AIのプロンプトの作り...
-
Google ColaboでGUI作成
-
VBAでパワーシェルを実行したい...
-
Python... 環境設定 初心者です...
-
COPYコマンドで、最後に1文字...
-
10進数から2進数に変換 例 185 ...
-
FILMORAを使っているのですがテ...
-
pythonでhtmlファイルの指定文...
-
HTMLソースが表示のページのも...
-
⚠️至急です!⚠️ Yahoo!知恵袋の...
-
Pythonでの文字列からfloatへの...
-
Webサイト内に埋め込んだmp4動...
-
テキストファイルの1行目のみを...
-
ネットワークフォルダの中身を...
おすすめ情報
Excelのセルに前記のような文字列が入っている状態です。
数字8桁だけを別列のセルに書き出せれば、なお良いです。
複数抽出したいです。