3

Я застрял с этим из часов.

У меня есть диапазон с ячейками со строковыми значениями:

A1 text1

A2 text2

Текст3

И другой столбец с другими строковыми значениями, такими как:

B1 text1sampletext

B2 text2sampletext

B3 text3sampletext

B4 text1sampletext

B5 text1sampletext

Я должен проверить, является ли текст в столбце A подстрокой текста в столбце B. Если это так, установить в столбце C текст из столбца A.

Как это:

B1 text1sampletext - C1 text1

B2 text2sampletext - C1 text2

B3 text3sampletext - C1 text3

B4 text1sampletext - C1 text1

B5 text1sampletext - C1 text1

3 ответа3

6

Это должно работать в Excel 2010 и не требует "записи массива"

=IFERROR(LOOKUP(2^15,FIND(A$1:A$3,B1),A$1:A$3),"not found")

FIND чувствителен к регистру, если вы не хотите, чтобы формула чувствительна к регистру, замените FIND с SEARCH

Предполагается, что A1:A3 не содержит пробелов

1

Без сомнения, Барри смущает меня

Но как-то так в С1 и скопированном будет работать для xl07 и xl10

Нажмите вместе, чтобы ввести это как формула массива

=IFERROR(INDEX(A$1:A$3,MATCH(TRUE,NOT(ISERROR(FIND(A$1:A$3,B1))),0)),"not found")

для всех версий xl снова нажмите =IF(NOT(ISNA(MATCH(TRUE,NOT(ISERROR(FIND(A$1:A$3,B1))),0))),INDEX(A$1:A$3,MATCH(TRUE,NOT(ISERROR(FIND(A$1:A$3,B1))),0)),"not found")

1

Мне пока не удалось заставить работать решение Дейва (brettdj).

Вот UDF, который будет работать:

Function copyText(rSubstr As Range, rText As Range)
'Check if any of the cell value from rSubstr exists in rText
Dim c As Range

If rText.Count > 1 Then Exit Function

For Each c In rSubstr
    If InStr(1, rText.Value, c.Value) > 0 Then
        copyText = c.Value
        Exit Function
    End If
Next c
End Function

Просто используйте эту функцию в вашем рабочем листе:

=copyText($A$1:$A$3;B1)

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