2017-09-29 21 views
2

セルに次のテキストがあります。excel vba - 指定された文字列からテキストを抽出する方法

私はstackoverflowを使用しています。
Stackoverflowは質問と回答のフォーラムです。
もう1つの行があるとします。

これを配列に分割しました。私は、具体的でなければなりませんanswer till forum.

出力からArr[1]から文字列を取得するにはどうすればよい

Arr[0] = I am using stackoverflow. 
Arr[1] = Stackoverflow is a question and answer forum. 
Arr[2] = Let’s say I have one more line. 

からanswer forum

+1

Mid(Arr(1)、Instr(Arr(1)、 "answer")、12) '? – YowE3K

答えて

1
私はあなたが正確に知っていないと仮定します

場所であなたの言葉「答えは」言葉「はフォーラム」、すなわち、その直後に発生していない、とすることを発生することArr(1)その変数Arr(1)かもしれませんには、文字列"Stack Overflow is a question and answer site and is not a forum like so many other sites"が含まれています。 (実際にはStack Overflowのより良い説明です)。

Dim temp As String 
Dim result As String 
arr(1) = "Stack Overflow is a question and answer site and is not a forum like so many other sites" 

'Get everything after the first occurrence of "answer" 
temp = Mid(arr(1), InStr(arr(1), "answer")) 

'Get everything before the first occurrence of "forum" 
result = Left(temp, InStr(temp, "forum") + 4) ' + 4 because the InStr will point to the "f" of "forum" 

'result will contain "answer site and is not a forum" 
1

使用したサブストリング。

ここで、13は部分文字列の長さで置き換えることができます。長さがインデックスの範囲外の例外を発生させないことを確認してください。

+0

VB.NetではなくVBAに関する質問。 (VBAでは宣言文の変数の初期化ができません)(そして、VBA **または** VB.Netは '()'の代わりに '[]'を許可しているとは思わない) – YowE3K

+0

Eh?それはVBAコードです... –

+0

そしてVBAはOOBを与えません。 'right(" abc "、10)'は単に "abc"を返します。 – YowE3K

1

これは、使用例に応じて最も強固な回答ではない場合があります。しかし、right()関数が機能します。

answerString = Right(Arr(1), 13) 
'answer forum. 
+1

ヨーロッパの朝です;-) – FunThomas

+0

わかりません - できます。 – FunThomas

+0

@ YowE3Kああ、あなたは正しい。元の投稿からまっすぐにコピーしました。しかし、はい、 '()'にする必要があります。私は反映するために私の答えを編集しました。 –

関連する問題