У Тома есть рабочий лист, содержащий довольно много текста. Ему нужен способ извлечь из текста любой заданной ячейки первую букву каждого слова в круглых скобках. Например, если в ячейке указано «Есть сорняк (весной), который необходимо искоренить», то Тому нужно вытащить «dts»

из этого текста. Он подозревает, что это нужно делать с помощью макроса, но не знает, с чего начать.

Если вы хотите выполнить эту задачу вручную, это не так уж и сложно. Я пройду через шаги быстро и в целом.

Предположим, что ваш текст находится в столбце A и каждая ячейка содержит только один набор круглых скобок. В этом случае вы можете поместить в столбец B следующее:

=IFERROR(LEFT(MID(A1,FIND("(",A1)+1,LEN(A1)),FIND(")", MID(A1,FIND("(",A1)+1,LEN(A1)))-1),"")

Несмотря на то, что здесь я разбил формулу на две строки, помните, что это одна формула и ее следует вводить как таковую. Скопируйте столько ячеек, сколько необходимо. В столбце B вы получите текст с первым набором круглых скобок (если они есть) в ячейке.

Затем выберите все ячейки в столбце B, нажмите Ctrl + C, а затем используйте Специальную вставку, чтобы вставить значения обратно в эти ячейки. Это избавляет от формул, но оставляет извлеченный текст в скобках.

Теперь ячейки в столбце B все еще должны быть выделены. Вы хотите использовать мастер «Текст в столбцы» (на вкладке «Данные» на ленте), чтобы разбить слова на отдельные ячейки. Это легко сделать, используя пробел в качестве разделителя в мастере. После этого вы получите по одному слову в каждом столбце, начинающемся со столбца C.

Теперь в первый столбец, в котором нет слов (скажем, это столбец J), вы должны ввести следующую формулу:

=LEFT(TRIM(C1),1) & LEFT(TRIM(D1),1) & LEFT(TRIM(E1),1)

& LEFT(TRIM(F1),1) & LEFT(TRIM(G1),1)) & LEFT(TRIM(H1),1)

& LEFT(TRIM(I1),1)

Опять же, это одна формула, хотя здесь она представлена ​​в трех строках. Это приведет к появлению желаемых первых букв в столбце J.

Очевидно, что этот процесс «выполнимый», если вам нужно только время от времени вытаскивать буквы. Если вам нужно делать это чаще, вам будет лучше полагаться на пользовательскую функцию, которая сделает всю работу за вас. Следующий простой способ будет работать нормально:

Function PickInitials(sRaw As String) As String     Dim sTemp As String     Dim J As Integer     Dim Wds() As String

sTemp = ""

J = InStr(sRaw, "(")

If J > 0 Then         sTemp = Mid(sRaw, J + 1)

J = InStr(sTemp, ")")

If J > 0 Then             sTemp = Left(sTemp, J - 1)

End If         Wds = Split(sTemp)



sTemp = ""

For J = 0 To UBound(Wds)

sTemp = sTemp & Left(Trim(Wds(J)),1)

Next J     End If     PickInitials = sTemp End Function

Чтобы использовать функцию, все, что вам нужно сделать, это использовать в ячейке следующее:

=PickInitials(A1)

Функция будет работать нормально, если в ячейке нет текста в скобках, если есть только открывающая скобка, и она не будет выброшена несколькими пробелами между словами. Функция сохраняет заглавные буквы в начальных буквах. Если вы хотите, чтобы все буквы возвращались в нижнем регистре, вы можете изменить последнюю строку макроса на это:

PickInitials = LCase(sTemp)

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (13622) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.