
No.4ベストアンサー
- 回答日時:
#1です。
先に投稿した関数の補足ですが、
私には、質問文からは、Excel なのか Access なのか、または Word のVBAなのかとかは判断がつきませんでしたので、
単に、「文字列から指定桁の数値のみ抜き出して返す」関数です。
(質問文の「見つけ出して表示する」という表現ではよく分からないので、
とりあえず、見つけ出した数値をすべてカンマ区切りにした文字列を返すことにしました)
なので、例えば検索文字列(第1引数)を「wtあ1234あい亜阿12345お6789」、桁数(第2引数)を「4」と指定した場合、「1234,6789」が返り、
桁数を「5」にすると「12345」が返るというだけのものです。
以上、補足でした。
No.5
- 回答日時:
ちょっとインチキな関数
以下は文字列中にある全ての数字列を配列で返す関数です。
Function GetNumericArray(ByVal Text)
Dim Script
Dim RegExp
Dim Temp As String
'==Scriptオブジェクトを作成する
Set Script = CreateObject("ScriptControl")
Script.Language = "VBScript"
'==正規表現オブジェクトを生成する
Set RegExp = Script.Eval("new RegExp")
'==前方と後方の非数字を除去する
RegExp.Global = True '★全体にパターン検索することを指定
RegExp.Pattern = "^\D+|\D+$" '前方に連続する非数字 or 後方に連続する非数字
Temp = RegExp.Replace(Text, "") '空文字列に置き換える
'==途中の非数字をカンマにする
RegExp.Pattern = "\D+" '連続する非数字
Temp = RegExp.Replace(Temp, ",")
'==カンマで区切って配列にする
GetNumericArray = Split(Temp, ",")
End Function
'===使用例
Dim X, Y
X = GetNumericArray("今日は2008年(平成20年)4月21日です")
For Each Y In X
Debug.Print Y
Next
戻り値は文字型データの配列になっています。この中から桁数や数値範囲などで、目的のものを見つけます。
話は変わりますが、正規表現をScriptControlを使わずに求める方法を知っている人がいたら、是非そのやり方を教えてほしいものです。
No.3
- 回答日時:
質問は#2のご回答のような内容ではないと思う。
質問の書き方が悪いからそういうことにもなる。
ーー
数字・漢字・かなの混じった文字列がセル(A列でよいのかな、複数列かな)にある。
数字だけ、数字の固まりだけ、抜き出すVBの関数はない。
1文字が数字かどうかの判別は出来ても、
(A)文字コードを判別
(B)IsNumeric関数利用
など
「数字の連なり(切れ目)」は自分で割り出すロジックを生みださないといけない。
>5桁の11456 と 14523のみ 見つけ出して
ここが紛らわしい表現だ。
5桁の数字のものを書き出したいではないの。
11456と例で修飾をつけるから、指定した数字列だけ出せばよいのと思っちゃう。
もしそれなら存在するセルの番地等が必要(求めるもの)になるでしょう。
No.1
- 回答日時:
そのような組込関数はありませんので、自分で関数を作るしかありません。
一文字づつ見ていけばいいと思います。
以下、例です。
何を返せばいいのか不明(数値の配列?、文字列?)なので、文字列(数値をカンマ区切り)を返す関数を考えてみました。
Private Function searchExNum(strSearch As String, nNumLen As Integer) As String
Dim nLen As Long
Dim n As Long
Dim i As Integer
Dim sss As String
Dim s As String
Dim sRet As String
searchExNum = ""
If nNumLen < 0 Then Exit Function
sss = strSearch & "a"
nLen = Len(sss)
i = 0
n = 1
Do While n <= nLen
s = Mid(sss, n, 1)
If IsNumeric(s) Then
i = i + 1
Else
If i = nNumLen Then
If Len(sRet) > 0 Then sRet = sRet & "," 'カンマで区切ることに
sRet = sRet & Mid(sss, n - nNumLen, nNumLen)
End If
i = 0
End If
n = n + 1
Loop
searchExNum = sRet
End Function
※この関数の呼び出し例(第2引数の「5」は桁数の指定です)
MsgBox searchExNum("erq23aefawefae333334df33345faf56789", 5)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELで、漢字のみ抽出する式を教えてください。 6 2022/04/27 14:40
- Visual Basic(VBA) VBA 「,」・空白・カタカナ等の複数条件のマクロ 2 2023/08/23 11:57
- Excel(エクセル) Excelの数字(文字列)合計について あるデータをダウンロードすると、数字データが全て文字列になっ 4 2022/09/26 21:21
- Excel(エクセル) SUMIF関数について 4 2023/06/14 13:13
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 16:55
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/03/09 08:37
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Visual Basic(VBA) VBA初心者です 検索した数字の行に色をつける 5 2023/02/13 14:22
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
Excelオートフィルター機...
-
Python Django csv について
-
VBAでの Replace関数で、ワイル...
-
指定した文字の前の数字を取り出す
-
文字列の最後の文字を置き換え...
-
結局、HTML5でクリップボードに
-
テキストエディタで複数行にわ...
-
VBA 1つのセルに入っている値の...
-
firefoxで、特定の文字列を含む...
-
エクセル マクロ 右側のスラッ...
-
10個の文字から4文字選んででき...
-
アドレスでの参照の仕方
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列の最大値を抽...
-
MessageBoxが表示されないのは何で
-
VBA2005 16進を2桁で表示したい。
-
変数内に入った文字列の結合 UWSC
-
StringGridで選択した箇所の文...
-
文字列ファイル表示プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報