Нужна формула для удаления слова переменной длины в ячейке, которая всегда начинается с HTTP - PullRequest
0 голосов
/ 11 октября 2019

У меня 1500 строк в одном столбце, который содержит рабочие заметки из билетов службы поддержки. Содержание объясняет, как они помогли звонящему. Иногда они вставляют ссылку HTTP (не горячую, поскольку это только текст), и ссылка http может быть любой длины. Мне нужно удалить ВСЮ символьную строку, составляющую гиперссылку.

Я пробовал различные формулы ISEARCH и TRIM, но безуспешно.

Содержание может выглядеть следующим образом:

Вызывающий абонент сообщил о проблеме с заполнением формы как требовании своей работы. Удаленный доступ к рабочему столу абонентов и попытки различных исправлений не увенчались успехом. В конце концов обнаружил исправление на внешнем веб-сайте, которое исправило проблему. https://troubleshootingfixfoundhere.com/!this_should_fix_the_issue_or_it_may_not32_40maybe

Вызывающая сторона смогла решить собственную проблему, используя шаги, найденные на этом веб-сайте

Какая формула может найти и удалить всю строку http, которая всегда будет переменной длины?

Заранее спасибо!

Ответы [ 3 ]

0 голосов
/ 11 октября 2019

Предполагается, что ваш текст сохранен в ячейке A2, а за URL следует пробел ("").

=CONCATENATE(LEFT(A2;SEARCH("http";A2)-1);MID(A2;FIND(" ";A2;SEARCH("http";A2));(LEN(A2)-FIND(" ";A2;SEARCH("http";A2)))+1))
0 голосов
/ 12 октября 2019

Вы можете использовать Power Query для решения проблемы. Power Query доступен в Excel 2010 Professional Plus и более поздних версиях Excel, включая Excel 2013.

Обратите внимание, что следующее решение работает при условии, что каждая целевая строка содержит прямую черту / и целевая строка разделяется пробелом " " с другими словами в тексте .

Поэтому мое решение не будет работать в следующих случаях:

I need to remove this www.test.com from the sentence. Мое решение не может обнаружить ссылку без косой черты /.

или

I need to remove thishttp://www.test.com from the sentence. Мое решение удалит thishttp://www.text.com из предложения, если оно естьнет пробела между this и ссылкой.

или

I/TerryW need to remove this www.test.com from the sentence. Мое решение удалит I/TerryW из предложения, но не ссылку, которая содержит предыдущаякосая черта "/".

Если вы можете терпеть вышеуказанные ограничения, давайте начнем:

  1. Загрузите ваши данные (это столбец с тысячами строк) вредактор Power Power;
  2. Добавитьn Индексный столбец для назначения уникального номера каждой строке;
  3. Использование Заменить значения на вкладке Transform для замены специальных символов, таких как Line Break илиCarriage Return с пробелом " ", повторите этот шаг столько раз, сколько необходимо, чтобы убедиться, что между целевой строкой и другими словами есть пробел;
  4. Используйте функцию Split Columns дляразделите столбец по пробелу " " и убедитесь, что результаты добавлены в Строки в расширенном параметре;
  5. Добавьте пользовательский столбец с помощью этой функции =Text.Contains([Column1],"/") где [Column1] - столбец, разбиваемый на последнем шаге. Эта функция вернет TRUE для строки, содержащей косую черту /;
  6. Фильтр настраиваемый столбец для отображения только FALSE результатов;
  7. Использование Группировка по функция для группировки [Column1] по столбцу индекса, как показано ниже:

Group By

Вернитесь к последнему шагу в редакторе мощных запросов, перейдите на панель формул и замените эту часть формулы List.Sum([Column1]) на Text.Combine([Column1]," ") и удалите столбец индекса;

После этого вы можете закрыть и загрузить вывод на новый рабочий лист (по умолчанию).

Вот примеры данных, которые я использовал:

String1

Caller reported trouble completing form as a requirement of their job. Remoted in to the callers desktop and attempted various fixes with no success. Eventually found a fix on an external website that corrected the issue. https://troubleshootingfixfoundhere.com/!this_should_fix_the_issue_or_it_may_not32_40maybe

The caller was able to fix own problem by using the steps found on that website

String2

01-18-2009 13:17:09 – Jim Bob (Work notes) Request is completed. This PTASK can be closed. 01-18-2009 13:16:08 – Jim Bob (Work notes) Request RITM9999999 created for DVR team to create a incidents in case below two URL's have failures xyz-zyx-iib.xyzint.net:7501/xyz/xyz/authenticatePin xyz-xyz-iib.xyzint.net:7501/xyz/xyz/activatePin

String3

01-25-1942 09:26:06 - Van Shoes (Work notes) 1.disabled the services that should not be running BDO side: 1.alarming is tuam to enable integration and email alarming is turned on. 2.An EMA service request has been created servicenow.xyzint.net/… for service integration. onenote:bdo.wss.xyzint.net/sites/RUN/DistributedServices/ContactCenter/…{D0333A-900-4C8-83E-45A6B0}&page-id={8D646}&end

И вот мой результат:

Result

Вот коды мощности M запросов за сценой только для справки:

let
    Source = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}}),
    #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1),
    #"Replaced Value" = Table.ReplaceValue(#"Added Index","#(lf)"," ",Replacer.ReplaceText,{"Column1"}),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Replaced Value", {{"Column1", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1"),
    #"Changed Type1" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Column1", type text}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type1", "Custom", each Text.Contains([Column1],"/")),
    #"Filtered Rows" = Table.SelectRows(#"Added Custom", each ([Custom] = false)),
    #"Grouped Rows" = Table.Group(#"Filtered Rows", {"Index"}, {{"Combined", each Text.Combine([Column1]," "), type text}}),
    #"Removed Columns" = Table.RemoveColumns(#"Grouped Rows",{"Index"})
in
    #"Removed Columns"

На самом деле, есть обходные пути для ограничений, которые я упоминал ранее. Например, вы можете использовать функцию Text.Replace в редакторе PQ, чтобы заменить http на (space)http, чтобы добавить пробел перед каждой целевой строкой, и вы можете добавить дополнительный шаг, чтобы оценить длину всех строк, которые содержат впередкосая черта /, и обычно ссылка http будет иметь большую длину, чем натуральное слово, поэтому вы можете исключить случай, когда между словами природы используется /. Извините за то, что ленивый, но учитывая, что выборочных данных недостаточно (и у меня заканчивается свободное время), я не буду разрабатывать все возможные решения.

Дайте мне знать, если у вас есть какие-либо вопросы. Ура :) 1123 *

0 голосов
/ 11 октября 2019

Если у вас есть только одна подстрока с http, то возможно:

enter image description here

Формула в B1:

=REPLACE(A1,FIND("http",A1),IFERROR(FIND(" ",A1,FIND("http",A1)),LEN(A1))-FIND("http",A1)+1,"")

Очевидно, вы можете сначала выполнить проверку, чтобы увидеть, является ли HTTP подстрокой.


На всякий случай вы можете иметь несколько подстрок в тексте, содержащем адрес HTTP И у вас есть доступ к TEXTJOIN Вы можете использовать следующее:

enter image description here

Формула в B1:

=TEXTJOIN(" ",TRUE,IF(ISNUMBER(FIND("http",FILTERXML("<t><s>"&SUBSTITUTE($A$1," ","</s><s>")&"</s></t>","//s"))),"",FILTERXML("<t><s>"&SUBSTITUTE($A$1," ","</s><s>")&"</s></t>","//s")))

Примечание: Это формула массива, которую необходимо подтвердить с помощью Ctrl Shift Ввод


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