Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Извлечение наименования для кодов - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Извлечение наименования для кодов
Shakal07 Дата: Суббота, 29.04.2023, 15:10 | Сообщение № 1
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2k3;2k7;2k10;2k13;2k19
Здравствуйте

Имеется Таблица с несколькими листами (Лист1, Справочник)
Необходимо на Листе1 в колонке "Наименование" получить название кодов через кому с пробелом.
Для одного кода все работает нормально. А для двух и более получаю ошибку.
Буду благодарен если кто-то окажет помощь с формулой.

Справочник только пример. В оригинальном более 10 тыс. строк

Для второй строки должно выйти наименование таким: Название и, Название а
А для третей — Название н, Название д, Название о

Спасибо.
К сообщению приложен файл: kniga2.xlsx (11.5 Kb)


Сообщение отредактировал Shakal07 - Суббота, 29.04.2023, 15:15
 
Ответить
СообщениеЗдравствуйте

Имеется Таблица с несколькими листами (Лист1, Справочник)
Необходимо на Листе1 в колонке "Наименование" получить название кодов через кому с пробелом.
Для одного кода все работает нормально. А для двух и более получаю ошибку.
Буду благодарен если кто-то окажет помощь с формулой.

Справочник только пример. В оригинальном более 10 тыс. строк

Для второй строки должно выйти наименование таким: Название и, Название а
А для третей — Название н, Название д, Название о

Спасибо.

Автор - Shakal07
Дата добавления - 29.04.2023 в 15:10
Pelena Дата: Суббота, 29.04.2023, 15:28 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19405
Репутация: 4555 ±
Замечаний: ±

Excel 365 & Mac Excel
Здравствуйте.
Для версий Excel с 2019 или 365
Код
=ОБЪЕДИНИТЬ(", ";1;ИНДЕКС(Справочник[Найименование];ПОИСКПОЗ(ТЕКСТРАЗД(Таблица2[@Код];", ");Справочник[Код];0)))


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
СообщениеЗдравствуйте.
Для версий Excel с 2019 или 365
Код
=ОБЪЕДИНИТЬ(", ";1;ИНДЕКС(Справочник[Найименование];ПОИСКПОЗ(ТЕКСТРАЗД(Таблица2[@Код];", ");Справочник[Код];0)))

Автор - Pelena
Дата добавления - 29.04.2023 в 15:28
прохожий2019 Дата: Суббота, 29.04.2023, 15:46 | Сообщение № 3
Группа: Проверенные
Ранг: Старожил
Сообщений: 1298
Репутация: 327 ±
Замечаний: 0% ±

365 Beta Channel
[sup]Начиная с 2016 можно PQ:
[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    dict = Function.Invoke(Record.FromList,List.Reverse(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Справочник"]}[Content]))),
    f=(x)=>Text.Combine(List.Transform(Text.Split(x,", "),(i)=>Record.Field(dict,i)),", "),
    to = Table.AddColumn(from,"Наименование",(x)=>f(x[Код]))
in
    to
[/vba]
ну и в 365:
Код
=ОБЪЕДИНИТЬ(", ";;ВПР(ТЕКСТРАЗД([@Код];", ");Справочник;2;))
К сообщению приложен файл: 7316357.xlsx (19.8 Kb)


Сообщение отредактировал прохожий2019 - Суббота, 29.04.2023, 15:52
 
Ответить
Сообщение[sup]Начиная с 2016 можно PQ:
[vba]
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица2"]}[Content],
    dict = Function.Invoke(Record.FromList,List.Reverse(Table.ToColumns(Excel.CurrentWorkbook(){[Name="Справочник"]}[Content]))),
    f=(x)=>Text.Combine(List.Transform(Text.Split(x,", "),(i)=>Record.Field(dict,i)),", "),
    to = Table.AddColumn(from,"Наименование",(x)=>f(x[Код]))
in
    to
[/vba]
ну и в 365:
Код
=ОБЪЕДИНИТЬ(", ";;ВПР(ТЕКСТРАЗД([@Код];", ");Справочник;2;))

Автор - прохожий2019
Дата добавления - 29.04.2023 в 15:46
Shakal07 Дата: Суббота, 29.04.2023, 16:21 | Сообщение № 4
Группа: Пользователи
Ранг: Участник
Сообщений: 54
Репутация: 0 ±
Замечаний: 0% ±

Excel 2k3;2k7;2k10;2k13;2k19
Pelena, прохожий2019, Спасибо за ответы.

Так как функция появилась только в Excel 2013 или выше, то мне данная формула не подходит для Excel 2010.

Проверить работоспособность смогу только на работе. А файлом надо пользоваться везде и на предыдущих версиях.

А есть ли подобная пользовательская функция
 
Ответить
СообщениеPelena, прохожий2019, Спасибо за ответы.

Так как функция появилась только в Excel 2013 или выше, то мне данная формула не подходит для Excel 2010.

Проверить работоспособность смогу только на работе. А файлом надо пользоваться везде и на предыдущих версиях.

А есть ли подобная пользовательская функция

Автор - Shakal07
Дата добавления - 29.04.2023 в 16:21
Nic70y Дата: Вторник, 02.05.2023, 10:42 | Сообщение № 5
Группа: Друзья
Ранг: Экселист
Сообщений: 9005
Репутация: 2369 ±
Замечаний: 0% ±

Excel 2010
как-то так примерно
[vba]
Код
Sub u_214()
    Application.ScreenUpdating = False
    For Each a In Range("Таблица2[Код]")
        b = Len(Replace(a, ",", ""))
        c = Len(a) - b + 1
        For d = 1 To c            
            e = Mid(a, (d - 1) * 12 + 1, 10)
            f = Application.Match(e, Range("Справочник[Код]"), 0)
            If IsNumeric(f) Then
                g = Application.Index(Range("Справочник[Найименование]"), f)
            Else
                g = "Ошибка"
            End If
            h = a.Offset(0, 1)
            i = ""
            If h <> "" Then i = ", "
            a.Offset(, 1) = h & i & g
        Next
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]
К сообщению приложен файл: 1099029.xlsm (21.4 Kb)


ЮMoney 41001841029809

Сообщение отредактировал Nic70y - Вторник, 02.05.2023, 10:43
 
Ответить
Сообщениекак-то так примерно
[vba]
Код
Sub u_214()
    Application.ScreenUpdating = False
    For Each a In Range("Таблица2[Код]")
        b = Len(Replace(a, ",", ""))
        c = Len(a) - b + 1
        For d = 1 To c            
            e = Mid(a, (d - 1) * 12 + 1, 10)
            f = Application.Match(e, Range("Справочник[Код]"), 0)
            If IsNumeric(f) Then
                g = Application.Index(Range("Справочник[Найименование]"), f)
            Else
                g = "Ошибка"
            End If
            h = a.Offset(0, 1)
            i = ""
            If h <> "" Then i = ", "
            a.Offset(, 1) = h & i & g
        Next
    Next
    Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Nic70y
Дата добавления - 02.05.2023 в 10:42
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!