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

В этой статье мы сосредоточимся на том, как сохранить первое слово только в каждой строке ячейки, разделенное точкой с запятой через макрокоды.

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

Ниже приведен снимок введенного текста (до листа)

img1

===

Ниже приведен снимок входящего текста (после листа) в столбце A & требует вывода в столбце B; см. снимок ниже:

===

img2

===

Получить код; нам нужно выполнить следующие шаги, чтобы запустить редактор VB. Щелкните вкладку «Разработчик». В группе «Код» выберите Visual Basic

img3

  • Скопируйте приведенный ниже код в стандартный модуль

Function FirstWordOnly(rng As Range)

Dim Arr() As Variant

Dim Count As Integer

Dim i As Integer



Count = Len(rng) - Len(Replace(rng, Chr(10), ""))



If Count > 0 Then

ReDim Arr(0 To Count)

For i = 0 To Count

If i = 0 Then

Arr(i) = Left(rng, InStr(1, rng, " ") - 1)

ElseIf j = 0 Then

j = InStr(1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

Else

j = InStr(j + 1, rng, Chr(10))

Arr(i) = Mid(rng, j + 1, InStr(j, rng, " ") - j)

End If

Next



FirstWordOnly = Join(Arr, "; ")

Else

If InStr(1, rng, " ") > 0 Then

FirstWordOnly = Left(rng, InStr(1, rng, " "))

Else

FirstWordOnly = rng

End If



End If



End Function

img4

===

Теперь код VBA готов к использованию; мы будем использовать только что созданную функцию, определяемую пользователем, то есть «FirstWordOnly» в Before Sheet.

Чтобы получить вывод с использованием UDF в ячейке B2, формула будет иметь вид = FirstWordOnly (A2)

img5

Пояснение к коду:

В приведенном выше коде мы использовали функции COUNT, LEN, REPLACE, IF, INSTR, MID, CHR, LEFT, JOIN VBA.

«Лен (рнг)»; это проверит длину ячейки, которую мы называем «Replace (rng, Chr (10),» «)»; Код проверяет Chr (10), т.е. разрыв строки в каждой строке, а затем заменяет его двойной кавычкой (ничего)

‘Count = Len (rng) — Len (Replace (rng, Chr (10),» «))’; Count будет сохранять разницу длины каждой строки после замены разрыва строки If Count> 0; это проверит, если длина Count больше нуля, и если она окажется равной нулю, то есть ячейка пуста, то условие IF не выполнит код. Чтобы проверить это, вы можете использовать = FirstWordOnly (A5) в ячейке B5, и он вернет 0

img6

Если ячейка не пуста, то цикл For будет использоваться с условием IF, а с функцией LEFT мы получим первое слово. Функция JOIN добавит точку с запятой в конце, если в каждой ячейке есть несколько строк. Заключение: с помощью UDF мы можем удалить все. в каждой строке ячейки, кроме первого слова через VBA. Эта функция будет работать во всех версиях от старой до новой, то есть Microsoft Excel 2003, Microsoft Excel 2007, Microsoft Excel 2010, Microsoft Excel 2013.

image 48

Если вам понравились наши блоги, поделитесь ими с друзьями на Facebook. А также вы можете подписаться на нас в Twitter и Facebook .

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить, дополнить или усовершенствовать нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]