2016-02-26 7 views
-1

так что у меня есть ячейка с текстом следующего содержания:Excel VBA: Я хочу взять текст между кавычками из ячейки.

The man "BOB" leaves his "home".

Как сделать так, что клетка просто говорит

The man leaves his home

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

Я мог бы также создать текст для столбцов макроса, так что бы выглядеть после того, как:

The man Bob leaves his Home

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

+6

Почему только «bob» удаляется, а не 'home'? – findwindow

+1

Вы можете комбинировать 'Mid()' с 'Search()', чтобы вытащить текст с обеих сторон цитат. Для нескольких котировок вы также можете использовать 'Substitute()'. – BruceWayne

+0

Если ваше предложение выше - всего лишь пример, это будет очень сложно. Ваш код должен думать, что BOB - это Человек, поэтому bob ссылается на Человека, затем Бобу нужно удалить. И тогда, что будет делать ваш код, если LISA, PAIDJO, JESUS ​​и т. Д.? – Paidjo

ответ

0

Я не уверен, что это можно было бы сделать «легко» с помощью встроенных функций excel. Однако вы можете добиться этого, используя код VBA. В модуле можно написать такую ​​функцию:

Public Function ReplaceInQuotes(ByVal str) 
    Set regex = CreateObject("vbscript.regexp") 
    regex.Global = True 
    regex.IgnoreCase = True 
    regex.Pattern = """.+?""" 
    Dim result 
    result = regex.Replace(str, "") 
    regex.Pattern = "\s+" 
    result = regex.Replace(result, " ") 
    ReplaceInQuotes = result 
End Function 

Для вызова функции выше, вы можете написать небольшой сабвуфер так:

Public Sub main() 
    Cells(1, "B").Value = ReplaceInQuotes(Cells(1, "A").Value) 
End Sub 

Так, скажем, если у вас есть строка в ячейке A1, затем в B1 после выполнения main sub вы получите свой результат. Функция ReplaceInQuotes работает с регулярными выражениями, поэтому вам может понадобиться немного манипулировать ею, чтобы иметь дело с некоторыми «двойными» пространствами, которые могут появиться.

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