2016-09-30 3 views
0

このタスクを実行する方法があるかどうかは疑問でした。私は列AとBを持っています。列A1には、テキスト値 "Shared Service"が含まれています。列B1には、テキスト値 "Shared"が含まれています。VBAを使用したカラムの検索と置換

「共有サービス」の「共有」部分を削除して「サービス」にするだけです。私は列A/Bの多くの異なる値に対してこれを行う必要があります。

これを簡単に自動化する方法はありますか?

回答していただきありがとうございますが、これらのソリューションは列がサイドへのラインアップ前提としています。それはちょうど質量が見つけ、ブランク値に置き換え、基本的ですが、それだけで

がUPDATE列Bの値をオフに基づいてする必要があります側。明確にするために、私は列Bのすべての値を探し、それらを列Aからすべて削除する必要があります。この例では、 "vat"行は "of"になります(列Bの "vat" Aからのそれ)。これは1000sの異なる値で行わなければなりません。提供される任意の助けを事前に

enter image description here

感謝。

+1

式 - '= TRIM(SUSTITUTE(A1、B1、" "))' –

+2

これは多くの方法があります。すでにコードをお持ちの場合は、投稿してください。そうでなければ、マクロレコーダーは良いスタートです。 – Comintern

+1

vba - '[A:A] = [INDEX(トリム(補助:A、B:B、"))、)] ' –

答えて

0

私は間違っている可能性がありますが、コレクションが必要なように聞こえます。私は出発点として、このようなものを参照してください。

Sub RemoveWords(DeleteFromCol As Range, FindCol As Range) 

    Dim words As New Collection 
    Dim r As Range 
    Dim word As Variant 

    For Each r In FindCol 
    words.Add (r.Value2) 
    Next r 

    For Each r In DeleteFromCol 
    For Each word In words 
     r.Value2 = Replace(r.Value2, word, "") 
    Next word 
    Next r 

End Sub 

そして、あなたはあなたの例では、aribitrary範囲でそれを呼び出すことができます:

RemoveWords Range("A1:A11"), Range("B1:B8") 

私は、これは100%ではないかもしれない推測している、とあなたの例では、 "1つの単語"リストに存在するので、私はいくつかのケースで両方の単語をパージします。しかし、あなたはそれを処理することができます。