Ваши примеры противоречат тому, начинается ли нужная строка с [LIT:
или [Lit:
Я предположил, что в верхнем регистре [LIT:
В LibreOffice (и, вероятно, других эквивалентах Excel, хотя я не имею представления об Apple Pages или Google Docs), функция FIND()
позволяет найти подстроку в текстовом поле, но возвращает ошибку, если подстрока не найдена, поэтому вам также нужно использовать IFERROR()
.
Сначала я рассмотрю простой пример, где любое поле [LIT:
всегда находится в конце строки, с ]
в качестве последнего символа. Если данные находятся в столбце A
, начиная с A1
, тогда следующая формула сделает то, что вы хотите:
=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"")
Здесь, если FIND()
возвращает значение, то возвращается подстрока от этой позиции до конца строки; в противном случае FIND()
и, следовательно, MID()
сгенерируют ошибку, и будет возвращена пустая строка.
В более сложном случае, когда поле [LIT:
может находиться в середине строки, необходимо разработать формулу:
=IFERROR(MID(A1,FIND("[LIT:",A1),FIND("]",MID(A1,FIND("[LIT:",A1),LEN(A1)))),"")
В этом случае подстрока [LIT:
до конца строки найдена, но количество символов, сгенерированных из исходной ячейки, ограничено положением ]
внутри подстроки; опять же, любая ошибка будет генерировать пустую строку.
Какую бы формулу вы не использовали, вы копируете ячейку, в которой она находится, и вставляете ее в оставшуюся часть столбца. Если вам нужно обработать [LIT:
или [Lit:
, то замените FIND("[LIT:",A1)
на SEARCH("\[L[Ii][Tt]:",A1)
: тогда как FIND()
выглядит для буквального совпадения с учетом регистра SEARCH()
использует сопоставление с регулярным выражением.
Если вам нужно удалить подстроку [LIT:
из исходного столбца A
, поместите извлеченное поле [LIT:
в столбец C
и поместите в B1
:
=SUBSTITUTE(A1,C1,"",1)
Теперь скопируйте это в оставшуюся часть столбца B
и скройте столбец A
Конечно, можно использовать любые столбцы и начальные строки; для моих примеров я использовал смежные столбцы без строк заголовка.
Обратите внимание, что =SUBSTITUTE()
не генерирует ошибок, поэтому нет необходимости использовать IFERROR()
.