#excel #excel-formula
#excel #excel-формула
Вопрос:
У меня есть куча данных, из которых я хочу извлечь все «sample1:» и любые буквы, которые идут сразу после него. Я не уверен, что лучший способ — отделить все sample1 от остальных строк в ячейках или что. Но в принципе, «sample1:» может содержать несколько следующих за ним букв, и оно может находиться в начале, середине или конце строки. Я приложил скриншот формата данных — например, я хочу извлечь все, что идет после sample1: и перед ; (например. sample1:A,B, C;sample3:20 будет извлекать только «sample1:A,B, C»)
Ответ №1:
Если у вас есть Excel O365, вы могли бы использовать LET()
, например:
=LET(X,SEARCH("sample1:",A2),Y,SEARCH(";",A2amp;";",X),MID(A2,X 8,Y-X-8))
В случае Excel 2013 или более поздней версии вы можете использовать FILTERXML()
, например:
=FILTERXML("<t><s>"amp;SUBSTITUTE(SUBSTITUTE(A2,":",";"),";","</s><s>")amp;"</s></t>","//s[preceding::*[1]='sample1']")
Во (AFAIK) всех версиях Excel вы можете продолжать использовать SEARCH()
:
=MID(A2,SEARCH("sample1:",A2) 8,SEARCH(";",A2amp;";",SEARCH("sample1:",A2))-SEARCH("sample1:",A2)-8)
Если вам нужно сохранить «sample1» там:
=LET(X,SEARCH("sample1:",A2),Y,SEARCH(";",A2amp;";",X),MID(A2,X,Y-X))
Или:
=FILTERXML("<t><s>"amp;SUBSTITUTE(A2,";","</s><s>")amp;"</s></t>","//s[starts-with(.,'sample1:')]")
Или:
=MID(A2,SEARCH("sample1:",A2),SEARCH(";",A2amp;";",SEARCH("sample1:",A2))-SEARCH("sample1:",A2))
Комментарии:
1. Спасибо! Но если я надеюсь сохранить образец 1 без изменений со всеми буквами A, B, C, будут ли они по-прежнему работать? Кроме того, это будет применяться для> 1000 строк, поэтому хотелось бы иметь надежное решение, в котором мне не нужно подсчитывать количество целых чисел для добавления / вычитания, чтобы получить начало «string1»
2. Что не является надежным в этих решениях? В любом случае, то, что вы хотите, легко сделать. Просто повозитесь с формулами, чтобы сохранить текст sample1
3.
LEN("sample:1")
может использоваться вместо жестко запрограммированного 8… если я правильно прочитал и понял формулы4. Спасибо, что показали эту функцию LET. Никогда не видел этого раньше, но делает обрезку текста в целом менее сложной.
5. @ForwardEd, я только что удалил -8 на самом деле. Тогда будет работать просто отлично.