3

Я хотел бы извлечь только слово из ячейки, которая содержит определенный символ ("=") в тексте.

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)),""))),""),

Эта формула не работает, как вы можете видеть, поскольку она извлекает данные только справа от символа ("=") со следующими результатами. Принимая во внимание, что я ищу решение, которое извлечет целое слово (справа и слева) из символа ("=").

2 ответа2

1

Попробуйте следующее U сер D efined F помазание (UDF)

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) очень просты в установке и использовании:

  1. ALT-F11 открывает окно VBE
  2. ALT-I ALT-M открывает новый модуль
  3. вставьте материал и закройте окно VBE

Если вы сохраните книгу, UDF будет сохранен вместе с ней. Если вы используете версию Excel более поздней, чем в 2003 году, вы должны сохранить файл как .xlsm, а не .xlsx

Чтобы удалить UDF:

  1. откройте окно VBE, как указано выше
  2. очистить код
  3. закройте окно 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

Макросы должны быть включены, чтобы это работало!

EDIT # 1:

Вы можете сделать это без VBA, используя ту же методологию. С данными в A1, в C1 введите:

=TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",999)),COLUMNS($A:A)*999-998,999))

и скопировать через. Затем в B1 введите:

=INDEX(C1:IV1,MATCH("*=*",C1:IV1,0))

-1

В Excel есть несколько текстовых функций, которые могут помочь вам извлечь слово или текст из другой текстовой строки. Какую функцию или комбинацию функций использовать, зависит от вашей ситуации. Пример: предположим, что в ячейке A1 есть текстовая строка: «Творчество требует смелости, чтобы отпустить определенность»

1. Чтобы получить первые 5 символов строки, мы используем функцию LEFT: = LEFT (A1,5). Результат - «Creat» 2. Чтобы получить последние 11 символов строки, мы используем функцию RIGHT: = RIGHT (A1,11). Результат - «определенность» 3. Чтобы получить 7 символов из строки, начинающейся с позиции 10, мы используем функцию MID: = MID (A1,10,7) В результате получается «y Requi». 4.Чтобы получить первое слово строки, мы используем функции ВЛЕВО и НАЙТИ: = ВЛЕВО (А1, (НАЙТИ (”, А1) -1)). Результат -“ Творчество ”. - Смотрите больше на: http://www.exceldigest.com/myblog/2009/02/01/how-to-extract-text-from-another-text-string/#sthash.yNDHU7Xe.dpuf

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .