Как заполнять ячейку значением, если другая ячейка содержит определенный текст?
В ячейке А1 текст "футболки красные"
В А2 "синие худи"
В А3 "свитшоты красные"
Нужно чтобы в B1-3 выводилось нужное значение в зависимости от того, какой текст содержится в А1-3. Если текст содержит "футболки", то выводим "Футболка". Если текст содержит "худи", то выводим "Худи" и т.д.
Пробовал =IFS(ПОИСК("футболка";A1); "Футболка"; ПОИСК("худи";A1); "Худи") , но срабатывает только на "футболка".
Пробовал =ЕСЛИ(ПОИСК("футболка";A1);"Футболка"), но не знаю как добавить условия еще и для худи и свитшотов.
Ну вот например - сойдёт на время, пока John Smith, покажет, как эта простейшая задача решается встроенными функциями.
В common-модуль:
Public Type relation
pattern As String
value As String
End Type
Public relations() As relation
Public Function get_category(Target As Range) As String
Dim i As Integer
If Target.Cells.Count = 1 Then
For i = LBound(relations) To UBound(relations)
If Target.value Like relations(i).pattern Then
get_category = relations(i).value
Exit Function
End If
Next
End If
End Function
В модуль книги:
Private Sub Workbook_Open()
ReDim relations(1 To 3)
relations(1).pattern = "*футболк*"
relations(1).value = "Футболки"
relations(2).pattern = "*худи*"
relations(2).value = "Худи"
relations(3).pattern = "*свитшот*"
relations(3).value = "Свитшоты"
End Sub
- excel с настройками по умолчанию задолбает криками "там vba! там леший бродит! разрешить?"
- сохранять придется в xlsm
Ну без этого никуда. Впрочем, ничто не мешает подписать макрос и избавиться от первой проблемы. А второе так и вовсе не проблема.
- для модификации списка придется править макрос, что не всем удобно\по плечу*
Макрос загрузки элементарно изменяется со статически прописанного в коде списка на загрузку с листа. Или можно завести текстовую константу со списком в CSV и распарсить его в массив.