Электронная таблица: разделить столбец, если он содержит определенную строку

278
big_smile

Вот выдержка из моей таблицы: enter image description here

Обратите внимание: это просто упрощенный пример. В моей полной электронной таблице много столбцов и более 10000 строк.

В моей электронной таблице часто встречаются строки с текстом в квадратных скобках, которые начинаются с LIT:(как на картинке).

Можно ли автоматически извлечь этот текст и поместить его в отдельный столбец электронной таблицы?

(Например, в приведенном выше примере [Lit: Next of hotel]помещается в отдельный столбец, но все равно остается в той же строке).

Примечание. Как показано в примере, не у каждой строки есть пример [Lit:].

В настоящее время я использую страницы Apple. Но я счастлив попробовать Google Docs или Open office, если он может это сделать, или другой пакет.

0

1 ответ на вопрос

1
AFH

Ваши примеры противоречат, начинается ли строка, которую вы хотите, [LIT:или [Lit:. Я предположил, что в верхнем регистре [LIT:.

В LibreOffice (и, вероятно, других эквивалентах Excel, хотя я не имею представления об Apple Pages или Google Docs), FIND()функция позволяет вам найти подстроку в текстовом поле, но она возвращает ошибку, если подстрока не найдена, поэтому вам нужно используйте IFERROR()также.

Сначала я рассмотрю простой пример, в котором любое [LIT:поле всегда находится в конце строки с ]последним символом. Если данные в столбце A, начиная с A1, то следующая формула будет делать то, что вы хотите:

=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"") 

Здесь if 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().

Спасибо, это прекрасно работает. За исключением того, что он оставляет строку LIT в исходном столбце. Я надеялся разделить его, поэтому строка удаляется из исходного столбца (и встречается только в новом столбце). Есть какой-либо способ сделать это? Еще раз спасибо за вашу помощь, я очень ценю, что вы нашли время, чтобы помочь мне! big_smile 6 лет назад 0
Это не было ясно из вашего вопроса. Вы не можете удалить текст из исходного столбца без сценариев. Что вы можете сделать, это создать новый столбец, который содержит отредактированный текст, а затем скрыть исходный столбец. AFH 6 лет назад 1
Спасибо! В любом случае можно использовать оператор NOT (например, найти все, что не является [LIT:] и все содержимое квадратных скобок. Таким образом, я мог бы скрыть исходный столбец, а затем создать два новых столбца. Один, который содержит все LIT текст (как вы показали с вашей формулой), а затем тот, который содержит весь текст НЕ Горит. Спасибо! big_smile 6 лет назад 0
Было бы неплохо, но единственный способ, которым я знаю, это найти начало `[LIT:` и вывести символы слева от него, соединенные с символами справа от последующего `]`, с любой ошибкой, генерирующей исходную строку. AFH 6 лет назад 1
Есть ли хороший ресурс, который вы могли бы порекомендовать, как я могу научиться делать это? Я думаю, что часть проблемы заключается в том, что я не уверен, как называется эта «область знаний», поэтому трудно найти ответы! big_smile 6 лет назад 0
Я думал, что ответом была разработка поисков и подстрок (что, я думаю, вы должны уметь работать), но потом я вспомнил функцию, которая обеспечивает более элегантный ответ, поэтому я обновил свой ответ, чтобы использовать это. AFH 6 лет назад 1

Похожие вопросы