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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
アクセスで特定の数字以外(複...
-
VBAでの Replace関数で、ワイル...
-
【Excel VBA】複数ある特定の文...
-
文字列から数式に変換する標準...
-
Excelで3E8を3.00E+8にしない方...
-
php言語の脆弱性について
-
C言語の勉強しています。すみま...
-
OnTime 使用時のプロシージャへ...
-
GASに文字列として関数を入れる...
-
【COBOL】文字列から数値項目に...
-
MS SQLServer のSQLで文字列の...
-
エクセルでSQLでいうところの「...
-
excel vba 17桁の数字が表示で...
-
BAHTTEXT関数?!
-
textboxユーザーコントロールの...
-
エクセルでセル内の文字列の最...
-
VBscriptで文字サイズを指定で...
-
【Teraterm】文字列と変数の連...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
Excelで3E8を3.00E+8にしない方...
-
エクセルで文字列をtxtファイル...
-
Excelで指数表現しないようにす...
-
【Excel VBA】複数ある特定の文...
-
Left関数とRight関数を合わせた...
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
VBA2005 16進を2桁で表示したい。
-
VBの「As String * 128」とは?
-
MS SQLServer のSQLで文字列の...
-
エクセル 数値データを桁をそ...
-
C#で年月を比較する
-
16進数を10進数に簡単に変換す...
-
“丸(〇/○/◯)”に似た文字…
-
アクセスで特定の数字以外(複...
-
Msgboxの×が押されたとき
おすすめ情報