Excel-VBA, как мне извлечь n-е слово из некоторых строк предложений - PullRequest
0 голосов
/ 06 января 2012

Как мне извлечь n-е слово из некоторых строк предложений? Например, у меня есть предложение в столбце A1, а другое в A2, A3 и т. Д. Как извлечь 2-е слово из каждого предложения? И отображать в ячейке рядом с каждым предложением. Буду признателен, если кто-то может написать пример для этого, я новичок в Excel-VBA.

Ответы [ 3 ]

4 голосов
/ 06 января 2012

Разделить его;

'//get value
dim para As string: para = range("a1").value
'//normalize new lines to space & split on space
dim words() As string
words = Split(Replace$(para, vbCrLf, " "), " ")
'//3rd word in adjacent cell;
range("b1").value=words(2)
2 голосов
/ 06 января 2012

Вы можете легко сделать это в VBA, но я предполагаю, что вы хотите сделать это с помощью Формул.

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

=FIND(" ", A1, 1)

Эту же функцию можно использовать для определения места окончания второго слова:

=FIND(" ",A1, FIND(" ",A1)+1)

Теперь мыможно использовать функцию Mid для извлечения слова из его начальной и конечной позиций:

=MID(A1, FIND(" ", A1, 1), FIND(" ",A1, FIND(" ",A1)+1)-FIND(" ", A1, 1))

Эта последняя формула - то, что вы хотите использовать.Это выглядит сложно, но это только первые две формулы, скопированные в функцию Mid.

Надеюсь, это поможет.

0 голосов
/ 20 августа 2016

Вы можете вставить это в модуль VBA для UDF, хотя работает только для одной ячейки.Просто дайте ему ссылку на ячейку и какой номер слова вы хотите извлечь:

Function WordExtract(CellRef As Range, Wordnum As Integer)

    Dim StartPos As Integer, EndPos As Integer, Counter As Integer

    StartPos = 1

    For i = 1 To Len(CellRef)
        If Mid(CellRef, i, 1) = " " Then
            If Wordnum - Counter = 1 Then
                EndPos = i - StartPos
                Exit For
                Else:
                StartPos = i + 1
                Counter = Counter + 1
            End If
        End If
    Next i

    If EndPos = 0 Then EndPos = Len(CellRef)

    WordExtract = Mid(CellRef, StartPos, EndPos)

End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...