2017-09-12 6 views
0

私は現在Excelのツールと学習に多くの忙しいですが、私は質問があります。現在、私は行のデータを持ついくつかの行があります。行には多くのデータがありますが、行の特定の部分が必要です。もちろん、私は手動でそれをすべて削除することができますが、3000行のためには、私は多くの時間を無駄にするでしょう。どのようにVBA Excelに文字列のマクロ部分

データをフィルタリングするマクロを手伝ってもらえますか。私が必要とするデータは[と]の間にあるので、例えば[データ]

私はあなたが私を助けてくれると嬉しいです。私はあなたが私を助けることができることを願っています!

例文字列ROW:

[Sandwitch]><xsd:element name="T8436283" 

だから私は何が必要なのでしょうか?

私はSandwitchを取得してB列に貼り付けるだけのマクロが必要です。すべての情報を含む文字列は列Aに残り、サンドイッチは列Bに移動し、すべての行に移動します。

+1

あなたの質問は非常に曖昧です。サンプルデータと予想される結果を追加してください。 – tigeravatar

+0

あなたは「単語単語[重要な単語]単語単語」のような情報を持つ単一のセルを持っていて、あなたは単にここで重要な単語を抽出したいと思いますか? – BruceWayne

+0

あいまいな質問を申し訳ありません。私は例を追加しました。だから基本的に私の文字列にはたくさんの情報があり、[と]の間の情報だけが必要です。その他の情報は必要ありません。ストリングは列Aにあり、サンドイッチ(例では)のみが列Bに配置する必要があります。 –

答えて

2

オプション1:検索/置換 1)は、別の列のデータをコピーします(ただ、元のコピーを保存する) 2)検索/置換を実行し、 "* [" 3)検索/置換を実行し、 "]" は、今、あなたはデータを持っていますそれは[]の間にあった。

オプション2:使用式 1)列の元のデータ "" 2)[] = MID(A1との間でデータを抽出する列 "B" は、この式を適用することを想定でき、[ "(FIND "、" A1)+ 1、FIND( "]"、A1)-FIND( "[" A1)-1)

オプション3:マクロ もし私がマクロを作成するのを助けることができます最初の2つの簡単なオプションを試してください。

+0

ありがとう!あなたはまた、 "と"の間の公式を持っていますか?第二のオプションは私のためにうまくいった!しかし、私はまた、列Cに "と"の間にある情報を求めています。あなたがそれを手伝ってくれたら、私の一日を作ったのです! –

0

正規表現で足を濡らしたい場合は、次のコードを参考にしてください。あなたはVBスクリプトライブラリへの参照を追加する必要が

Tools > References > Microsoft VBScript Regular Expressions 5.5 

は、その後のコードは次のとおりです。

Sub textBetweenStuffs() 

    Dim str As String 
    Dim regEx As RegExp 
    Dim m As Match 
    Dim sHolder As MatchCollection 
    Dim bracketCollection As Collection 
    Dim quoteCollection As Collection 

    Set regEx = New RegExp 

    'Matches anything in between an opening bracket and first closing bracket 
    regEx.Pattern = "\[(.*?\])" 
    str = "[Sandwitch]><xsd:element name=""T8436283""" 

    'populates matches into match collection 
    Set sHolder = regEx.Execute(str) 

    Set bracketCollection = New Collection 

    'loop through values in match collection to do with as you wish 
    For Each m In sHolder 
     bracketCollection.Add m.Value 
    Next i 

    Set sHolder = Nothing 

    'get values between Quotations 
    regEx.Pattern = "\"(.*?\")" 

    'populates matches into match collection 
    Set sHolder = regEx.Execute(str) 

    Set quoteCollection = New Collection 

    'loop through values in match collection to do with as you wish 
    For Each m In sHolder 
     quoteCollection.Add m.Value 
    Next i 

End Sub 
0

一般的な目的は、「次までのxを開始するに要素を見つけますy ":

Function GenExtract(FromStr As String, _ 
        StartSep As String, EndSep As String) _ 
       As Variant 

Dim StPos As Long 
Dim EnPos As Long 

GenExtract = CVErr(xlErrNA) 
If StartSep = "" Or EndSep = "" Then Exit Function 'fail 
StPos = InStr(1, FromStr, Left(StartSep, 1)) 
If StPos = 0 Or StPos = Len(FromStr) Then Exit Function 'fail 
EnPos = InStr(StPos + 1, FromStr, Left(EndSep, 1)) 
If EnPos = 0 Then Exit Function 'fail 

GenExtract = Mid(FromStr, StPos + 1, EnPos - StPos - 1) 

End Function 

2つの区切り文字e引用符ごとに同じで囲まれた最初の文字列を与えます。