2017-02-17 4 views
-1

Я пробовал искать ответ, но, к сожалению, я не смог найти что-либо, что удовлетворяет моим конкретным потребностям в этой ситуации.VBA скопируйте содержимое ячейки за вычетом содержимого другой ячейки

У меня есть две ячейки, из которых последняя состоит из слова, которое также можно найти в первой ячейке. Я хочу, чтобы скопировать все содержимое из ячейки 1 в ячейку 3 минус содержимое ячейки 2.

Например:

Cell 1

Это пример текста

Сотовая связь 2

Образец

Cell 3

This Is Text

Есть ли способ сделать это либо с помощью VB макроса или даже с простой формулой?

Заранее благодарю за любую помощь.

+1

Ознакомьтесь с формулой SUBSTITUTE. – SJR

+1

@SJR Troll Mode ON: LOL «особые потребности»! – R3uK

+0

Или 'WorksheetFunction.Replace' https://msdn.microsoft.com/en-us/library/office/ff194800.aspx – Vityata

ответ

0

Попробуйте это:

Sub removeYourString() 
    Dim withParts As String 
    Dim removeParts As String 
    Dim withoutParts As String 

    withParts = Range("A1").Value 
    removeParts = Range("A2").Value & " " 
    withoutParts = Replace(withParts, removeParts, "") 
    Range("A3").Value = withoutParts 
End Sub 

Удалить все в колонке

Sub removeYourString() 
    Dim withParts As String 
    Dim removeParts As String 
    Dim withoutParts As String 
    Dim i As Integer 

    For i = 1 To 100 
     withParts = Range("A" & i).Value 
     removeParts = Range("B" & i).Value & " " 
     withoutParts = Replace(withParts, removeParts, "") 
     Range("C" & i).Value = withoutParts 
    Next i 
End Sub 

Или использовать формулу и положить в c1 через c100

=SUBSTITUTE(A1,B1 & " ","") 
+0

Большое спасибо, pokemon_Man. Это именно то, что я искал. Как можно расширить код, чтобы он ссылался на целые столбцы, а не на ячейки? Например, возьмите записи от A1 до A100 и удалите из нее соответствующую запись от B1 до B100 и поместите ее в C1-C100. –

+0

проверить обновленный пост. –

+0

@ D.Todor - там действительно не нужно VBA, когда есть идеальная формула рабочего листа. – SJR

0

Вы можете работать вокруг этой формулы в CELL3 :

=CONCATENATE(LEFT([Cell1],FIND([Cell2],[Cell1],FIND([Cell2],[Cell1])+1)-1),RIGHT([Cell1],FIND([Cell2],[Cell1])+LEN([Cell2])+1)) 
0

Разрабатывая по предложению SJR о SUBSTITUTE:

использовать следующую формулу: =TRIM(SUBSTITUTE(A1,B1,"")). Поместите это в C1 и скопируйте столбец. Это приведет к удалению слова в столбце 2 из строки в столбце 1. Функция TRIM избавляет от лишних пробелов, где слово удаляется. Если слово может встречаться как подмножество другого слова (например, слово «test», но ваша строка «Test, testing, 1, 2, 3»), вы можете добавить пробел в конец слова фильтра, тестирование "не соответствует.

Если слово встречается несколько раз, оно удаляет все совпадения, если вы не укажете, какое событие вы хотите удалить. изменение (A1,B1,"") на (A1,B1,"",1) удалит только первое встречное совпадение. Поэтому «Test1 test2 test3» будет изменен на «1 test2 test3»

Смежные вопросы