Необходимо посчитать определенный текст в Excel относительно сегодняшней даты с большим количеством переменных данных в каждой ячейке - PullRequest
0 голосов
/ 21 мая 2018

Я экспортировал обновления из моей программы отслеживания билетов в службу поддержки в Excel.Каждая ячейка содержит все обновления, сделанные на одном билете в течение срока действия билета.Вот пример типичной ячейки:

IM1234567;"4/20/16 15:31:01 US/Eastern (Smith John ABC DEF GHI): Some text about the status of the ticket. 04/13/16 23:53:06 (Doe Jane ABC DEF GHI): Some more text about the status."

Цель состоит в том, чтобы подсчитать имя каждого техника в заявке, если они обновили заявку в прошлом месяце.У меня все техники разбиты на отдельные столбцы с каждым билетом в отдельном ряду.Вот пример:

Ticket     Jane Doe     John Smith    James Adam    Etc
IM1234567    1              0             0           0
IM1234568    0              1             0           0
IM1234569    0              0             1           0

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

Спасибо за поддержку.

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

РЕДАКТИРОВАТЬ : обновлен для обработки 1- или 2-значных месяца и дня.

РЕДАКТИРОВАТЬ2 : обновлен, чтобы автоматически вычислять, как далеко впереди в билете смотретьдля имени.

Если вы согласны с именем в таблице в первом формате, это будет работать.Введите в качестве формулы массива (ctrl + shift + enter):

SUM(IF(ISNUMBER(VALUE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),1))),IF(ISNUMBER(VALUE(MID($A2,ROW(INDIRECT("1:"&LEN($A2)))-1,1))),0,IF(LEN(SUBSTITUTE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),8),"/",""))=6,IF(IFERROR(DATEVALUE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),8)),IFERROR(DATEVALUE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),7)),IFERROR(DATEVALUE(MID($A2,ROW(INDIRECT("1:"&LEN($A2))),6)),0)))>EDATE(TODAY(),-3),IF(IFERROR(FIND(" ("&C$1,MID($A2,ROW(INDIRECT("1:"&LEN($A2))),SEARCH(")",MID($A2,ROW(INDIRECT("1:"&LEN($A2)))+8,LEN($A2))))),0)>0,1,0),0),0)),0))

enter image description here

0 голосов
/ 21 мая 2018

Формула =(LEN(<Insert Complete string ticket address here>)-LEN(SUBSTITUTE(<Insert Complete string ticket address here>,<Insert name or address here>,"")))/LEN(<Insert name or address here>) должна помочь.

Редактировать: Чтобы решить проблему порядка lastname, firstname, поменяйте имена, когда вы обращаетесь к ним в вашей формуле с помощью: =MID(B1&" "&B1,FIND(" ",B1)+1,LEN(B1)).

Итак, в резюме, поместите на B2:

=(LEN($A2)-LEN(SUBSTITUTE($A2,MID(B$1&" "&B$1,FIND(" ",B$1)+1,LEN(B$1)),"")))/LEN(MID(B$1&" "&B$1,FIND(" ",B$1)+1,LEN(B$1))) и перетащите его в другие ячейки.

Наконец, найдите нужное значение (извините за позднюю правку, я не прочитал ваш вопрос с большим вниманием), попробуйте следующее (в ячейке B2):

{=SUM(IF(IFERROR(FIND(TEXT(NOW()-31;"m/yy");(FILTERXML("<t><s>" & SUBSTITUTE($A2; "."; "</s><s>") & "</s></t>"; "//s")));0)<>0;LEN((FILTERXML("<t><s>" & SUBSTITUTE($A2; "."; "</s><s>") & "</s></t>"; "//s")))-LEN(SUBSTITUTE((FILTERXML("<t><s>" & SUBSTITUTE($A2; "."; "</s><s>") & "</s></t>"; "//s"));MID(B$1&" "&B$1;FIND(" ";B$1)+1;LEN(B$1));"")))/LEN(MID(B$1&" "&B$1;FIND(" ";B$1)+1;LEN(B$1))))}

Пожалуйста, убедитесь: Сначала:Вы помещаете формулу в виде массива (Ctrl + Shift + Enter) для ввода скобок;Второе: проверьте формат отображения "m/yy", используемый в вашей стране или в вашей версии Excel.

Я протестировал формулу на аналогичном моем собственном файле, и она сработала.

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