• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:文字列から「任意の数字+特定の文字」を探す)

VBAマクロで文字列から特定の条件の部分を探す方法

このQ&Aのポイント
  • VBA マクロを利用して、任意の数字と特定の文字が含まれる部分を文字列から探す方法について説明します。
  • 具体的には、文字列中の「数字 + 特定の文字」のパターンを見つけて分離するコードを作成します。
  • また、見つかったパターンが存在しない場合は分離せずに元の文字列をそのまま利用します。

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

参考に Dim myStr As String Dim i As Long, n As Long myStr = "Cells(1,1)=2[-1 " For i = 0 To 9 n = InStr(myStr, i & "[") If n > 0 Then Exit For Next If i > 9 Then MsgBox myStr Else MsgBox Left(myStr, n) End If

fisica
質問者

お礼

ありがとうございます。 >For i = 0 To 9 n = InStr(myStr, i & "[") If n > 0 Then Exit For Next こういう発想を知らず勉強になりました。 大変参考になりました。 助かりましたありがとうございます。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

基本的に関数ではまず無理という性格の問題と思う。 すでに#1で出ているように、VBA、VBSを使って正規表現に持ち込むか、正規表現を重視しているテキストエディタ(UNIX系が発祥)を使ってできないか考えることになるでしょう。 オフィスはワイルドカード以外は、正規表現のような考え方は、重視していないようで 充実していない。むしろバージョンが進んで退化した?ように思う。ワードの方がまだその考えを取り入れているように思う。 正規表現は、質問者に取って、1夜の勉強で利用可能かどうか疑問がある。 VBAでInstr関数で[の位置は簡単にi判るが、その直後の文字が数字かどうか判定が必要のようだからプログラムを組む必要が出てくる。 ーー その前に、ルールについて しかしその判定のロジックが、質問の説明では不十分ではないか? 数字部分は、むしろ数字というよりも、数であって、-1などは数とするのかな。 6[[-[1[   → 6[[-[1は文章ではどう説明するの? どうだからこうだという説明を文章でしてみてよ。 7-[-1  → 7-[-1 は該当しないというケース例か? もう少し文章で言えばどうなるのか、正確に質問者が思考し、丁寧に表現しないと、むつかしさも大幅に変わる(あるいは不可能という結論になる)と思うよ。回答もミスする。 質問者のレベルでは、データ数(セル数)が少ないなら、多分該当文字箇所を質問者が頭で、判定し、素の箇所に特殊記号を挿入して置き、全セルまとめてその部分以下を捨てる(関数を利用)のが早いと思うよ。

fisica
質問者

お礼

ありがとうございます。 説明不足で申し訳ありません。 "-1"などの場合は"1"だけが対象で、" [ "の直前の一文字が数字という意味でした。

すると、全ての回答が全文表示されます。
  • trytobe
  • ベストアンサー率36% (3457/9591)
回答No.1

「正規表現」を使って、数字を表す「d」または「[0-9]」が何文字か、とか、 ¥[ という正規分布では範囲を示す特殊文字「 [ 」そのものを検索させる、とか、 そうやって行うのが、他の処理系でも使える正規表現をそのまま流用できて書きやすいように思いますよ。 正規表現による文字列マッチング | EXCE(エクセル)のVBA・マクロ http://excel-mania.com/vba/regexp.html VBAで正規表現を利用する(RegExp)|ExcelマクロVBA技術解説 http://excel-ubara.com/excelvba4/EXCEL232.html

fisica
質問者

お礼

ありがとうございます。 正規表現という概念を初めて知りましたので勉強しようと思います。

すると、全ての回答が全文表示されます。

関連するQ&A