Вход
Быстрая регистрация
Если вы у нас впервые: О проекте FAQ
0

Как удалить html теги из ячейки Excel?

vdtest [18.5K] 3 месяца назад
  • Какой формулой извлечь текст из ячейки Эксель, убрав HTML теги?
  • Как удалить html теги bp ячейке Excel?
  • Как ячейку с тегами html текст?

1

В новых версиях Excel удобно пользоваться функцией ОБЪЕДИНИТЬ (разделитель параметров ","):

ОБЪЕДИНИТЬ(разделите­ль, попускать_пустые, текст1, текст2,... )

вместо текст1, текст2,... можно использовать массив букв исходной строки, в котором если разница между полной длиной строки до исходного символа и длиной строки без символов "<" и ">" четная то в массив ставится символ строки иначе путая строка ("")

этот расчёт можно взять из

ответа на вопрос "Как в EXCEL считать количество символов в ячейке без учета тегов HTML?"

Записываем в виде формулы Excel для ячейки A2:

=ОБЪЕДИНИТЬ( "", 1, ЕСЛИ( ОСТАТ( ДЛСТР(ПСТР(A2, 1, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))))) - ДЛСТР( ПОДСТАВИТЬ( ПОДСТАВИТЬ( ПСТР(A2, 1,СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 )))), "<", ""), ">","")) + ЕСЛИ(ПСТР(A2, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))), 1)=">", 1, 0), 2)=0, ПСТР(A2, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))), 1), ""))

Результат для бесплатной онлайн версии Excel:

Эта формула не требует выделения дополнительных ячеек и обрабатывает текст ячейки без ограничений на количество тегов HTML, но даёт ошибку для пустых ячеек, если это недопустимо, то формулу придётся изменить:

=ЕСЛИ(ЕПУСТО(A2), "", ОБЪЕДИНИТЬ( "", 1, ЕСЛИ( ОСТАТ( ДЛСТР(ПСТР(A2, 1, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))))) - ДЛСТР( ПОДСТАВИТЬ( ПОДСТАВИТЬ( ПСТР(A2, 1,СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 )))), "<", ""), ">","")) + ЕСЛИ(ПСТР(A2, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))), 1)=">", 1, 0), 2)=0, ПСТР(A2, СТРОКА( ДВССЫЛ("1:"&ДЛСТР( A2 ))), 1), "")))

0

Алгоритм формулы

  1. Находим индекс символа открывающего тега "<".
  2. Находим индекс символа закрывающего тега "<".
  3. Определяем подстроку, содержащую тег функцией ПСТР используя найденные значения индексов.
  4. Удаляем тег функцией ПОДСТАВИТЬ, заменяя найденную подстроку на пустую.
  5. В случае если нет одного из тегов возвращаем исходную строку (функция ЕСЛИОШИБКА)

Получаем формулу для удаления одного тега из текста ячейки A1:

=ЕСЛИОШИБКА( ПОДСТАВИТЬ(A1; ПСТР(A1; НАЙТИ("<"; A1); НАЙТИ(">"; A1; НАЙТИ("<"; A1))-НАЙТИ("<"; A1)+1); ""); A1)

растягивая формулу по строке (или по столбцу) получим текст без тегов:

Знаете ответ?
Есть интересный вопрос? Задайте его нашему сообществу, у нас наверняка найдется ответ!
Делитесь опытом и знаниями, зарабатывайте награды и репутацию, заводите новых интересных друзей!
Задавайте интересные вопросы, давайте качественные ответы и зарабатывайте деньги. Подробнее..
регистрация