2013-08-23 7 views
11

文字列内の特定の単語まで文字列の内容を削除しようとしています。例Excel VBA - 文字列の内容を*単語まで削除します。

"Emily has wild flowers. They are red and blue." 

のために私は

"They are red and blue." 

すなわちで言葉「彼ら」に、すべてのコンテンツを削除することを置き換えるために、VBAを使用したいと思います。私は文字列の内容とその中に含まれる文字の数を知らない。

これを行う方法がわかりません。本当にありがとうございます。ここで

+4

ルック。私は文字通りこれをどのようにプログラムするのか分かりませんでした。本当に助けが必要です。 VBAをかなり新しくしている人物としてこのコードを作成できないとどうして悪いのですか?ここでほとんどのユーザーと同じくらいの経験がない人にとっては、ちょっと不公平です。 – jcv

+7

あなたはいくつかの回答を受け入れているので、おそらく私はあなたに利用可能なブログがたくさんあることを言及しているかもしれません。 IMO SOは、 'コードを尋ねる質問は、解決されている問題の最小限の理解を示す必要があります。試行された解決策、なぜそれがうまくいかなかったのか、そして期待される結果を含める '。あなたはここで大歓迎ですが、条約を破る>制裁を期待してください。これは(他の人たちのために)あなたの利益のためです。 – pnuts

+0

@jcv私は人々が理由や答えを与えずにdownvotedので、私は質問をすることが禁止されている...私はあなたの痛みを知っている – Babar

答えて

12

あなたが行く:文字列の値の前にすべてのテキストをドロップする

Dim s As String 
s = "Emily has wild flowers. They are red and blue." 

Dim indexOfThey As Integer 

indexOfThey = InStr(1, s, "They") 


Dim finalString As String 
finalString = Right(s, Len(s) - indexOfThey + 1) 
+0

クイック返信をいただきありがとうございます、それは問題を解決する! – jcv

+3

文字列の長さを計算する必要はありません。 'finalString = Mid(s、indexOfThey)'、Midの場合と同様に、長さは任意です – SeanC

+2

これは部分単語も捕捉します。 「アルゴリズムを実行します」で「go」を検索していた場合、「goor to go」になります。 – Aharpe

3

簡単な例。

Sub Foo() 
    Dim strOrig As String 
    Dim strReplace As String 
    strOrig = "The Quick brown fox jumped over the lazy dogs" 
    strReplace = "jumped" 

    MsgBox (DropTextBefore(strOrig, strReplace)) 

End Sub 

Public Function DropTextBefore(strOrigin As String, strFind As String) 
    Dim strOut As String 
    Dim intFindPosition As Integer 
    'case insensitive search 
    'could made it so that case sensitivity is a parameter but this gets the idea across. 
    If strOrigin <> "" And strFind <> "" Then 
     intFindPosition = InStr(UCase(strOrigin), UCase(strFind)) 
     strOut = Right(strOrigin, Len(strOrigin) - (intFindPosition + Len(strFind) - 1)) 
    Else 
     strOut = "Error Empty Parameter in function call was encountered." 
    End If 
    DropTextBefore = strOut 
End Function 
0

単語が固定されている場合は、 "彼ら" は上記の例では、あなたは、単に

  1. CTRL + Hを行うことができますように(置き換え)
  2. *彼ら(星とあなたの言葉)

[検索]ボックス。スター*はワイルドカード文字で、単語の前後に(末尾に追加されていれば)何かのものとして呼び出すことができます。

注意:同じセルに重複する単語がある場合は注意してください。

+0

ありがとうございますが、私が必要とするアプリケーションはより複雑で、VBAを駆動する必要があります。 – jcv

+0

なぜそれはdownvotedです...これは、これは複雑で、requried VBA駆動stratergyです質問に書かれていた.... – Vasim

+0

私は "私はVBAを使用したいと思います'vba'と' excel-vba'タグはあなたのアプローチが危険であるという事実に加えて、VBAを示しています。そして、単語 "彼ら"の前のテキストが変わるかもしれないという事実には触れません。それは質問のポイントを逃し、安全にそれに答えることはありません。 – LittleBobbyTables

1

これは私のために素晴らしい仕事:人々は、このために否定的な評価を授与する理由私にはわからない

Sub remove_until() 

Dim i, lrowA, remChar As Long 
Dim mString As String 

lrowA = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row 

For i = 1 To lrowA 

mString = Cells(i, 1).Value 


    If InStr(mString, "They") > 0 Then 

    remChar = Len(mString) - InStr(mString, "They") + 1 

    Cells(i, 2).Value = Left(mString, Len(mString) - remChar) 

    End If 


Next 

End Sub 
関連する問題