Извлечь последние 2 разрыва строки из excel - PullRequest
0 голосов
/ 17 июня 2020

Я пытаюсь достичь следующего:

enter image description here

Я бы хотел, чтобы ячейка AD3 вытащила последние 2 строки текста из ячейки AC3 , который будет изменчивым и часто меняющимся. Текст в ячейке AC3 разделен разрывами строки.

Если вам интересно, в настоящее время я просто набрал значения в ячейке AD3 для демонстрации моей цели.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 17 июня 2020

Много способов сделать это. Вот тот, который легко адаптируется для возврата других строк.

Если у вас есть функции, доступные в вашей версии Excel, вы можете использовать FILTERXML и TEXTJOIN

=TEXTJOIN(CHAR(10),,FILTERXML("<t><s>"&SUBSTITUTE(A1,CHAR(10),"</s><s>")&"</s></t>","//s[position()>last()-2]"))
  • "<t><s>"&SUBSTITUTE(A1,CHAR(10),"</s><s>")&"</s></t>" создает XML, где разрывы строк разделяют узлы
  • xpath аргумент "//s[position()>last()-2]") возвращает два последних узла. Очевидно, это можно изменить многими способами, чтобы вернуть другие узлы
  • TEXTJOIN, а затем присоединить эти узлы с разрывом строки.

enter image description here

0 голосов
/ 17 июня 2020

Вернуть последние 2 строки

В B1 введите формулу:

=TRIM(RIGHT(SUBSTITUTE(A1,CHAR(10),REPT(" ",399)),799))

enter image description here

0 голосов
/ 17 июня 2020

Давайте разберемся с этим. Для облегчения записи я использую A1.

Сначала вы хотите узнать, сколько строк в ячейке.

=LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))

Эта формула возвращает количество символов 10, которые используются для разрыва строки в ячейке. Если в ячейке 5 строк, будет 4 символа разрыва строки. Если вы хотите вернуть последние 2 строки, вам нужно все после предпоследнего символа разрыва строки. Чтобы определить предпоследний разрыв строки, вычтите 1.

=LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))-1

Замените предпоследний символ разрыва строки на символ, который, как вы знаете, в противном случае не будет в вашей ячейке, например символ с кодом 160 , который является непечатаемым пробелом.

=SUBSTITUTE(A1,CHAR(10),CHAR(160),LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))-1)

Затем вы хотите найти позицию символа 160

=FIND(CHAR(160),SUBSTITUTE(A1,CHAR(10),CHAR(160),LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))-1))

Теперь, когда вы знаете положение этого символа, вы можно использовать MID (), чтобы вернуть текст после этого символа (добавить 1 к позиции этого символа). Предположим, что последние две строки текста в A1 никогда не превышают 99 символов, используйте это для того, сколько символов вы хотите вернуть. Или используйте свое любимое большое число, которое сделает это.

=MID(A1,FIND(CHAR(160),SUBSTITUTE(A1,CHAR(10),CHAR(160),LEN(A1)-LEN(SUBSTITUTE(A1,CHAR(10),""))-1))+1,99)

enter image description here

Не забудьте отформатировать ячейку с помощью формулы для переноса!

...