
Обратите внимание: это всего лишь упрощенный пример. Моя полная таблица содержит много столбцов и более 10 000 строк.
В моей электронной таблице часто встречаются строки с текстом в квадратных скобках, начинающимся с LIT:
(как на изображении).
Можно ли автоматически извлечь этот текст и поместить его в отдельный столбец электронной таблицы?
(Например, в приведенном выше примере это [Lit: Next of hotel]
будет помещено в отдельный столбец, но все равно останется в той же строке).
Примечание: Как показано в примере, не в каждой строке есть пример [Lit:].
В настоящее время я использую Apple Pages. Но я с удовольствием попробую Google Docs или Open Office, если они это могут, или другой пакет.
решение1
Ваши примеры противоречивы относительно того, начинается ли нужная вам строка с [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()
.