Страницы: 1
RSS
Формула для распознания слова из справочника
 
   обрый день! есть задача  - разнести единицы анализируя список -справочник в первом столбце с шапкой таблицы.

те в ячейке напротв списка должна появится "1" под соответствующм столбцом, в случае выполняюшегося условия :
- если в списке первого столбца фигурирует название ТОЛЬКО одного брэнда в соответсвующей ячейке должна стоять  "1"  
- если название встречается  в списке нескольких брэндов, то "1" ставится под столбцом  СПИСОК.

раньше делалось вручную (
подскажите реально ли это упростить с помощью формул?  спасибо
стоит офис365  
Изменено: vikttur - 15.10.2021 20:12:33
 
Ольга Боб, А что языки разные так задумано? если да то ответ нет, или создавать список еще "переводов" или сделать все на одном языке
Изменено: Mershik - 13.10.2021 12:23:28
Не бойтесь совершенства. Вам его не достичь.
 
поменяла. на один язык .  
 
может необходиом создать, дополнительный- промежуточный список.

посмотрела в поиске на форуме. нашла тему Подтянуть значения не по точному соответствию, а по совпадению одного из слов в двух столбцах (planetaexcel.ru) но не пойму как можно доработать до моей задачи.  
 
Ольга Боб, да нет вам нужно нормальный пример сделать,
а то у Вас в шапке искомых значений
что то в списке, что то просто список
Фрисо в спискеНутрилон толькоНутрилон списокНеокейт толькоНеокейт список
т.е. как они наываются так и писать

формула если у Вас в шапке написано так же как и в 1 столбце через "в списке" или "только" и не для нескольки позиций, для нескольки макрос навреное или чет еще)
в с4 и протянуть:
Код
=ЕСЛИ(C$3="един";ЕСЛИ(ПОДСТАВИТЬ(C$2;" только";"")=$A4;1;"");ЕСЛИ(И(ЕЧИСЛО(ПОИСК(ПОДСТАВИТЬ(C$2;" в списке";"");$A4));ЕЧИСЛО(ПОИСК(";";$A4)));1;""))
Изменено: Mershik - 18.10.2021 11:57:47
Не бойтесь совершенства. Вам его не достичь.
 
Ольга Боб, скачайте файл, нажмите Alt+F8 - Выполнить
 
Mershik, Вы крутой! Формула сработала :) благодарна вам очень.
Не пойму только почему со всеми названиями не сработатывает. вроде и написано так же и везде на " в списке"  исправила
но главное это можт автоматичекси заполнятся. будут разбираться что то может в названиях подтправлю

спасибооо!  :)


посмотрите пожалуйста, то что выделила зеленым все супер сработало.

а вот в красной заливке ,не пойму почему она не распознает , если брэнд Фрисо или как пример Альфаре Аллерджи в списке, она не помечает "1"  
Изменено: Ольга Боб - 18.10.2021 20:53:28 (файл вставляю с уточнением)
 
Цитата
New написал:
Ольга Боб , скачайте файл, нажмите Alt+F8 - Выполнить
скачала, открыла.
выполнить нажала, выдало ошибку run time Error 9
 
значит не судьба, у меня такой ошибки нет
 
вы знаете , мне кажется? проблема в русском языке ,моего MSофиса. потому что все что в макросе  у вас написано на русском, программа перевела в зашифрованные знаки и скорее всего поэтому выдает ошибку.

не получается сюда картинку вставить что б вы увидели. так как если скопировать текст? о вставлят без ошибки.
я пробовала перевести excel на английский не помогло :((  
Изменено: Ольга Боб - 18.10.2021 20:54:42
 
Цитата
Ольга Боб написал: все что в макросе  у вас написано на русском , программа перевела в зашифрованные знаки
у Вас МАС? Он не любит кириллицу в редакторе VBA
 
 неа у меня HP
 
Ольга Боб, вот код макроса. В вашем файле замените абра-кадабрку на русские буквы (в трёх строках - первая, третья, последняя строки) (зелёный текст можно не менять)

Код
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
Изменено: New - 18.10.2021 21:05:58
 
опять вернула excel на русский и слова в вашем макросе русские теперь распознаются. вроде все ок
а вот название файла и страница в VBA  в виде ???????? пишет.
:(  
 
Ольга Боб,
Цитата
Ольга Боб написал:
а вот в красной заливке ,не пойму почему она не распознает , если брэнд Фрисо или как пример Альфаре Аллерджи в списке, она не помечает "1"  
ну потому что ранее писал что должно быть как то все одинаково написано, для чего вы ставте в конце ";"  (точку с запятой) там где всего одна номенклатура
так нужно не точное совпадение ... хотя зачем вы выделили Фрисо Пеп; Фрисо Пеп АС; - для единичного не понятно
Изменено: Mershik - 18.10.2021 22:29:38
Не бойтесь совершенства. Вам его не достичь.
 
Ольга Боб, Проверьте у себя в настройках Windows 10 - региональные параметры -> справа дополнительные параметры даты, времени, региона -> изменение форматов даты, времени и чисел -> дополнительно.
См. картинку
 
New, спасибо!
невероятно. все получилось !!!!
ну как так вы можете )))
класс какой .
спасибо вам.
Изменено: vikttur - 19.10.2021 15:17:59
Страницы: 1
Наверх