Мне бы хотелось извлечь из ячейки только то слово, которое содержит определенный символ («=») в тексте.
A2: Dolly made me a homemade=cake and some muffins
A3: we had cheese=cake for dinner
A4: Everyone loves how the bakery makes some awesome=cakes
Я хотел бы, чтобы следующее из столбца (A2:A4) предоставило следующие результаты в столбце (B2:B4).
B2: homemade=cake
B3: cheese=cake
B4: awesome=cakes
Я попробовал следующее решение с функциями рабочего листа.
A2: Johnny made his own dinner=lastnight and then cleaned the kitchen
=TRIM(TRIM(IFERROR(RIGHT(SUBSTITUTE(LEFT(A2,SEARCH(" ",A2&" ",SEARCH("=",A2))-1)," ",REPT(" ",LEN(A2))),LEN(C246)),""))),""),
Эта формула, как вы можете видеть, не работает, поскольку она извлекает данные только справа от символа ("=") со следующими результатами. В то время как я ищу решение, которое извлечет все слово (справа и слева) от символа ("=").
решение1
Попробуйте следующееУсерДопределенФсоборование(УДФ)
Public Function Equals(inpt As String) As String
Equals = ""
ary = Split(Application.WorksheetFunction.Trim(inpt), " ")
For Each a In ary
If InStr(1, a, "=") > 0 Then
Equals = a
Exit Function
End If
Next a
End Function
Пользовательские функции (UDF) очень просты в установке и использовании:
- ALT-F11 открывает окно VBE
- ALT-I ALT-M открывает новый модуль
- вставьте текст и закройте окно VBE
Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel позже 2003, вы должны сохранить файл как .xlsm, а не .xlsx
Чтобы удалить UDF:
- откройте окно VBE, как указано выше
- очистить код
- закрыть окно VBE
Чтобы использовать UDF из Excel:
=равно(A1)
Чтобы узнать больше о макросах в целом, см.:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
и
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
а для получения подробной информации о UDF см.:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
Для работы этого метода должны быть включены макросы!
ПРАВКА №1:
Вы можете сделать это безВБА, используя ту же методологию. С данными вА1, вС1входить:
=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
и копировать поперек. Затем вВ1входить:
=INDEX(C1:IV1,MATCH("*=*",C1:IV1,0))
решение2
Excel имеет ряд текстовых функций, которые могут помочь вам извлечь слово или текст из другой текстовой строки. Какую функцию или комбинацию функций использовать, зависит от вашей ситуации. Пример: предположим, что ячейка A1 содержит текстовую строку: «Творчество требует смелости отказаться от определенности»
1. Чтобы получить первые 5 символов строки, мы используем функцию LEFT: =LEFT(A1,5) Результат — «Creat» 2. Чтобы получить последние 11 символов строки, мы используем функцию ПРАВСИМВ: =ПРАВСИМВ(A1,11) Результат — «определенности» 3. Чтобы получить 7 символов из строки, начиная с позиции 10, используем функцию MID: =MID(A1,10,7) Результат — «y requi». 4. Чтобы получить первое слово строки, используем функции ЛЕВСИМВ и НАЙТИ: =ЛЕВСИМВ(A1,(НАЙТИ(” “,A1)-1)) Результат — «Творчество». - Смотрите больше на:http://www.exceldigest.com/myblog/2009/02/01/как-извлечь-текст-из-другой-текстовой-строки/#sthash.yNDHU7Xe.dpuf