Excel получает подстроку от n-й позиции до конца строки - PullRequest
0 голосов
/ 26 февраля 2019

Итак, как получить подстроку от n-й позиции до конца строки?

Ввод в ячейку A1 Name: Thomas B.

Ожидаемый вывод: Thomas B.

Iзнаете какой-то способ сделать это, но мне интересно, есть ли другие элегантные способы, кроме них?(какой-то =RIGHT(A1, -6) ....)

  1. =MID(A1, 6, 999999) // 999999 выглядит не очень хорошо

  2. =MID(A1, 6, LEN(A1) - 5) // нужно вычислить 2 раза, сначала получить len, затем получить подстроку, кажется, слишком много работает?

Ответы [ 4 ]

0 голосов
/ 26 февраля 2019

ЗАМЕНА

Как уже писал Доминик: «Почему бы вам не заменить первые шесть символов пустой строкой?»

=REPLACE(A1,1,6,"")

I 'мы провели измерения времени, но разница составляет менее секунды при 50000 записях (для LEFT, MID, REPLACE & SUSTITUTE).Поэтому я боюсь, что ELEGANCE - это все, что вы получите.

Небольшое исследование

Я создал это исследование, потому что, когда вы говорите изn-й символ, ваш n -й символ 7 (ваши MID неверны), но вы хотите удалить первый n-1 ( 6 )персонажи.Поэтому, в зависимости от того, как вы сформулируете свой вопрос, у вас может быть другой подход в RIGHT или MID, и вы будете помнить REPLACE и SUBSTITUTE, а можете и нет.

enter image description here

Малые формулы обучения для A1 (*) и B1 (#,?, *)

Получить строку изN-й символ до конца, например, 7

=RIGHT(A1,LEN(A1)-(B1-1))
=RIGHT(A1,LEN(A1)-B1+1)
=RIGHT(A1,LEN(A1)-6)
=MID(A1,B1,LEN(A1)-(B1-1))
=MID(A1,B1,LEN(A1)-B1+1)
=MID(A1,B1,LEN(A1))
=MID(A1,7,LEN(A1)-6)
=MID(A1,7,LEN(A1))

Удалить N первых символовстроки, например, 6

=RIGHT(A1,LEN(A1)-B1)
=RIGHT(A1,LEN(A1)-6)
=MID(A1,B1+1,LEN(A1)-B1)
=MID(A1,B1+1,LEN(A1))
=MID(A1,7,LEN(A1)-6)
=MID(A1,7,LEN(A1))

Получить строку после символа, например, ""

=RIGHT(A1,LEN(A1)-(FIND(B1,A1)))
=RIGHT(A1,LEN(A1)-(FIND(" ",A1)))
=MID(A1,FIND(B1,A1)+1,LEN(A1)-FIND(B1,A1))
=MID(A1,FIND(B1,A1)+1,LEN(A1))
=MID(A1,FIND(" ",A1)+1,LEN(A1)-FIND(" ",A1))
=MID(A1,FIND(" ",A1)+1,LEN(A1))

Получить строку после строки, например":"

=RIGHT(A1,LEN(A1)-(FIND(B1,A1)+LEN(B1))+1)
=RIGHT(A1,LEN(A1)-FIND(B1,A1)-LEN(B1)+1)
=RIGHT(A1,LEN(A1)-FIND(": ",A1)-LEN(": ")+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-(FIND(B1,A1)+LEN(B1))+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1)-FIND(B1,A1)-LEN(B1)+1)
=MID(A1,FIND(B1,A1)+LEN(B1),LEN(A1))
=MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1)-FIND(": ",A1)-LEN(": ")+1)
=MID(A1,FIND(": ",A1)+LEN(": "),LEN(A1))

Вернуться к удалению N первых символов строки, например, 6

=SUBSTITUTE(A1,LEFT(A1,6),"",1)

=REPLACE(A1,1,6,"")
0 голосов
/ 26 февраля 2019

Почему бы вам просто не заменить первые шесть символов пустой строкой?

=SUBSTITUTE(A1;LEFT(A1;6);"";1)
0 голосов
/ 26 февраля 2019

Другая возможность состоит в том, что вы создаете константу со значением 2 ^ 31-1 (= 2147483647), которое является максимальным целочисленным значением со знаком в 32-разрядных системах, и вы даете ей хорошее имя, например, MaxInt, затем вашПервая формула также будет эффективной и красивой:

=MID(A1, 6, MaxInt)

Вы можете добавить Имя с помощью Ctrl + F3.Если вы заинтересованы в быстрых вычислениях, то вместо 214-1 можно указать его как 2147483647.

0 голосов
/ 26 февраля 2019

Хорошо, оба ваших метода уже работают, но вы также можете использовать этот:

=RIGHT(A1,LEN(A1)-6)

(у вас почти был этот в вашем собственном вопросе)

или этот:

=TRIM(MID(A1,FIND(":",A1)+1,100))

(функция FIND () возвращает числовую позицию строки поиска, поэтому отлично подходит для создания динамических подстрок)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...