Мне нужна определенная функция, и я думаю, что она не существует в стандартном Excel, и, вероятно, мне нужна пользовательская функция VBA.

Эта функция должна делать что-то вроде FIND.VERT, но с частичным поиском, чтобы найти частичный текст в целевой строке.

=MYCUSTOM.FIND.VERT(A1;KeyTable!A:B;2;SpecialPartialLookup)

Это клетки-мишени (? это место формулы):

+----------------------------------+---+
| Text with some keyword somewhere | ? |
| Another test for this function   | ? |
| I'm not very imaginative now     | ? |
+----------------------------------+---+

и таблица ключевых слов:

+------------------+-----------+
|     KEYWORD      |   VALUE   |
+------------------+-----------+
| somewhere        | adverb    |
| test             | noun      |
| very imaginative | adjective |
| very imaginative | dontknow  |
+------------------+-----------+

Это то, что я хочу:

+----------------------------------+-----------+
|               TEXT               | RESULT    |
+----------------------------------+-----------+
| Text with some keyword SOMEWHERE | adverb    |
| Another TEST for this function   | noun      |
| I'm not VERY IMAGINATIVE now     | adjective |
+----------------------------------+-----------+

(верхний регистр только для отображения соответствия)

Является ли это возможным?

1 ответ1

0

Это ответ:

Function VerticalMatch(Value As Range, Matrix As Range, Index As Integer) As Variant
    Dim baseText As String
    Dim x As Integer
    x = 0
    baseText = LCase(Value.Item(1).Value)


    For Each cell In Matrix.Columns(1).Cells
        x = x + 1
        If baseText Like LCase(cell.Value) Then
            VerticalMatch = Matrix.Columns(Index).Rows(x).Value
            Exit Function
        End If
    Next

    VerticalMatch = CVErr(xlErrNA)

End Function

Это работает как Find.Верт, но с использованием "как" сравнение.

Таким образом, ввод должен быть заполнен подстановочными знаками:

+--------------------+-----------+
|     KEYWORD        |   VALUE   |
+--------------------+-----------+
| *somewhere         | adverb    |
| *test*             | noun      |
| *very imaginative* | adjective |
| *very imaginative* | dontknow  |
+--------------------+-----------+

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