обрый день! есть задача - разнести единицы анализируя список -справочник в первом столбце с шапкой таблицы.
те в ячейке напротв списка должна появится "1" под соответствующм столбцом, в случае выполняюшегося условия : - если в списке первого столбца фигурирует название ТОЛЬКО одного брэнда в соответсвующей ячейке должна стоять "1" - если название встречается в списке нескольких брэндов, то "1" ставится под столбцом СПИСОК.
раньше делалось вручную ( подскажите реально ли это упростить с помощью формул? спасибо стоит офис365
Ольга Боб, да нет вам нужно нормальный пример сделать, а то у Вас в шапке искомых значений что то в списке, что то просто список
Фрисо в списке
Нутрилон только
Нутрилон список
Неокейт только
Неокейт список
т.е. как они наываются так и писать
формула если у Вас в шапке написано так же как и в 1 столбце через "в списке" или "только" и не для нескольки позиций, для нескольки макрос навреное или чет еще) в с4 и протянуть:
Код
=ЕСЛИ(C$3="един";ЕСЛИ(ПОДСТАВИТЬ(C$2;" только";"")=$A4;1;"");ЕСЛИ(И(ЕЧИСЛО(ПОИСК(ПОДСТАВИТЬ(C$2;" в списке";"");$A4));ЕЧИСЛО(ПОИСК(";";$A4)));1;""))
Mershik, Вы крутой! Формула сработала благодарна вам очень. Не пойму только почему со всеми названиями не сработатывает. вроде и написано так же и везде на " в списке" исправила но главное это можт автоматичекси заполнятся. будут разбираться что то может в названиях подтправлю
спасибооо!
посмотрите пожалуйста, то что выделила зеленым все супер сработало.
а вот в красной заливке ,не пойму почему она не распознает , если брэнд Фрисо или как пример Альфаре Аллерджи в списке, она не помечает "1"
вы знаете , мне кажется? проблема в русском языке ,моего MSофиса. потому что все что в макросе у вас написано на русском, программа перевела в зашифрованные знаки и скорее всего поэтому выдает ошибку.
не получается сюда картинку вставить что б вы увидели. так как если скопировать текст? о вставлят без ошибки. я пробовала перевести excel на английский не помогло (
Ольга Боб, вот код макроса. В вашем файле замените абра-кадабрку на русские буквы (в трёх строках - первая, третья, последняя строки) (зелёный текст можно не менять)
Код
Sub Проставить_единицы()
Dim LastRow As Long, arrColumnOneItems, arrItemNames, ItemName As String, iRow As Long, iCol As Long, OneOrList, v As String
With Worksheets("справочник")
LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
arrColumnOneItems = .Range("A1:A" & LastRow).Value
arrItemNames = .Range("A2:V2").Value
For iCol = 3 To 18 Step 2
v = Application.Trim(arrItemNames(1, iCol))
ItemName = Split(v)(0)
For iRow = 4 To LastRow
If arrColumnOneItems(iRow, 1) Like "*" & ItemName & "*" Then
If Application.Trim(Len(arrColumnOneItems(iRow, 1))) - Len(ItemName) <= 2 Then
'только
.Cells(iRow, iCol) = 1
Else
'список
.Cells(iRow, iCol + 1) = 1
End If
End If
Next iRow
Next iCol
End With
MsgBox "Единицы проставлены!", vbInformation, "Конец"
End Sub
опять вернула excel на русский и слова в вашем макросе русские теперь распознаются. вроде все ок а вот название файла и страница в VBA в виде ???????? пишет.
Ольга Боб написал: а вот в красной заливке ,не пойму почему она не распознает , если брэнд Фрисо или как пример Альфаре Аллерджи в списке, она не помечает "1"
ну потому что ранее писал что должно быть как то все одинаково написано, для чего вы ставте в конце ";" (точку с запятой) там где всего одна номенклатура так нужно не точное совпадение ... хотя зачем вы выделили Фрисо Пеп; Фрисо Пеп АС; - для единичного не понятно
Ольга Боб, Проверьте у себя в настройках Windows 10 - региональные параметры -> справа дополнительные параметры даты, времени, региона -> изменение форматов даты, времени и чисел -> дополнительно. См. картинку