Как удалить определенный текст из ячейки в Excel? - PullRequest
0 голосов
/ 14 ноября 2018

У меня есть ячейка в Excel, которая содержит следующее:

@ dickfundy @ThatKevinSmith @aliciamalone @MovieMantz @dickfundy nope, просто Stranger Things Season 2 или Ready Player https: xxxxxxxxxxx

Я хочу удалить имена пользователей (все, начинающиеся с «@»), а также я хочу удалить веб-ссылку («https: xxxxxxxxxxx»), и я хочу добавить это в ячейку:

Нет, только Stranger Things Season 2 или Ready Player

У меня есть 60 000 других ячеек, содержащих аналогичный текст.Как мне это сделать?

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Как UDF:

Function FixIt(s As String) As String
    s = CleanUp(s, "@")
    s = CleanUp(s, "http")
    FixIt = Trim(s)
End Function

'remove all text segments beginning with LookFor, up to the next space
'  or until the end of the input string s
Function CleanUp(s As String, LookFor As String) As String
    Dim pos As Long, pos2 As Long, rv As String
    rv = s
    pos = InStr(1, rv, LookFor)
    Do While pos > 0
        pos2 = InStr(pos + 1, rv, " ")
        If pos2 = 0 Then pos2 = Len(rv)
        rv = Left(rv, pos - 1) & Right(rv, Len(rv) - pos2)
        pos = InStr(1, rv, LookFor)
    Loop
    CleanUp = rv
End Function

Если вы хотите что-то надежное:

Как использовать регулярные выражения (Regex) в Microsoft Excel как в ячейке, так и в циклах

0 голосов
/ 14 ноября 2018

Я считаю, что ваша версия Excel имеет функцию TEXTJOIN.В таком случае вы можете использовать эту формулу массива

=TEXTJOIN(" ",TRUE,IF((LEFT(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",999)),seq_999,999)))="@")+(LEFT(TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",999)),seq_999,999)),4)="http"),"",TRIM(MID(SUBSTITUTE(TRIM(A1)," ",REPT(" ",999)),seq_999,999))))

, где seq_999 - именованная формула, которая

refers to:  =IF(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))=1,1,(ROW(INDEX(Sheet1!$1:$65535,1,1):INDEX(Sheet1!$1:$65535,255,1))-1)*999)

Для ввода / подтверждения формула массива , удерживайте нажатой ctrl + shift при нажатии введите .Если вы сделаете это правильно, Excel поместит фигурные скобки {...} вокруг формулы, отображаемой в строке формул.

0 голосов
/ 14 ноября 2018

Если вы удалили до последнего имени пользователя (с «Заменить» *@ ничем), вы можете применить:

=LEFT(MID(A1,FIND(" ",A1),LEN(A1)),FIND("http",MID(A1,FIND(" ",A1)+1,LEN(A1))))

SO53291434 example

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...