2

Учитывая ячейку таблицы, содержащую строку, состоящую из дешённой серии сегментов символов, мне нужно извлечь последний сегмент.Как извлечь анализируемые данные из ячейки один раз в другую

Например, рассмотрим столбец А, содержащий строки данных, такие как XX-XXX-X-XX-XX-G10, где X обозначает любой символ. Какую формулу мне нужно разместить в столбце B, чтобы получить G10?

  A    B 
1 XX-XXX-X-XX-XX-G10  G10 

Я ищу формулу, которая могла бы работать в Свободном в офис Calc, Open Office Calc, MS Excel или Google Таблицах.

+0

Спасибо @Mogsdad за редактирование и уточнение моего вопроса :) – PipBoy2000

+1

Рад - вау, 5 ответов! (Конечно, если бы вы упоминали, что часть, которую вы хотели, всегда была 3 персонажа, это было бы намного, намного, намного проще!) – Mogsdad

+0

Да. Я все еще изучаю SO;), чтобы быть более точным в объяснении проблемы. Большое спасибо еще раз за помощь и время @Mogsdad (im беспокоился, чтобы быть замедленным, ад, D) – PipBoy2000

ответ

2

Другая возможность в LO Calc следует использовать макрос регулярного выражения общего назначения, показанный здесь: https://superuser.com/a/1072196/541756. Тогда формула ячейки была бы подобна ответу JPV в:

=REFIND(A1,"([^-]+$)") 
+0

Whooah! Превосходный! <3 regex и работать как шарм! – PipBoy2000

+0

А как насчет этого случая? http://stackoverflow.com/questions/38095773/how-to-extract-data-from-one-cell-to-another – PipBoy2000

0

Похоже, что вы хотите, чтобы символы, которые появлялись в конце строки, справа от последнего экземпляра символа дефиса, "-".

Эта формула, адаптировано из here, работает в Excel, * Calc & Google Sheets:

=TRIM(RIGHT(SUBSTITUTE(A1,"-",REPT(" ",LEN(A1))),LEN(A1))) 

Объяснение:

  • SUBSTITUTE(A1,"-",new_string) найдет каждый дефис ("-") в исходной строке из ячейку A1 и замените ее на new_string.

  • REPT(" ",LEN(A1)) - это строка повторяющихся символов пробела (" "), такая же длина, как и исходная строка в ячейке A1.

  • TRIM(RIGHT(string,count)) будет получать самые правильные символы count и обрезать передние и конечные пробелы. Поскольку строка была ранее дополнена заменой дефисов пробелами, а count - это то же самое LEN(A1), которое используется для этой прокладки, последние символы count состоят из кучки пробелов, за которыми следуют все, что следовало за последним дефисом!

В Google Таблицах, альтернативный подход заключается в использовании функции SPLIT, чтобы разбить значение из столбца A в массив, а затем выбрать последний элемент. (Excel-VBA имеет split() функцию, так что вы могли бы сделать эту работу в Excel, написав VBA код для предоставления его в качестве пользовательской функции.)

=INDEX(SPLIT(A1,"-"),0,COUNTA(SPLIT(A1,"-"))) 
2

Если вы используете Google листы, REGEXEXTRACT бы тоже возможно:

=REGEXEXTRACT(A1, "[^-]+$") 
+1

Самое элегантное решение - мне действительно не хватает функции замены в Regex в LO Calc! – tohuwawohu

1

в LibreOffice Calc и OpenOffice Calc, вы можете использовать регулярные выражения для определения положения текста после последнего - характера:

=SEARCH("-[:alnum:]+$";A1) 

вернет 15 если A1 содержит XX-XXX-X-XX-XX-G10.

Теперь вы можете использовать это значение, чтобы получить текст «за» эту позицию, используя нужную функцию():

=RIGHT(A1;LEN(A1)-SEARCH("-[:alnum:]+$";A1)) 

Разделить на несколько строк:

=RIGHT(    ' return text beginning from the right... 
    A1;    ' of cell A1 ... 
    LEN(A1)   ' start at lenght(A1) = 18 
    -     ' minus ... 
    SEARCH(   ' position ... 
     "-[:alnum:]+$" ' of last "-" ... 
     ;A1   ' in cell A1 = 15 ==> last three characters 
    ) 
) 
0

я нашел просто решение:

= RIGHT (A1; 3)

, что дает мне G10 как результат тоже! Это работает, потому что у COL A всегда есть 3 символа в конце!

+0

А как насчет этого случая? http://stackoverflow.com/questions/38095773/how-to-extract-data-from-one-cell-to-another – PipBoy2000

Смежные вопросы