Имеется Таблица с несколькими листами (Лист1, Справочник) Необходимо на Листе1 в колонке "Наименование" получить название кодов через кому с пробелом. Для одного кода все работает нормально. А для двух и более получаю ошибку. Буду благодарен если кто-то окажет помощь с формулой.
Справочник только пример. В оригинальном более 10 тыс. строк
Для второй строки должно выйти наименование таким: Название и, Название а А для третей — Название н, Название д, Название о
Спасибо.
Здравствуйте
Имеется Таблица с несколькими листами (Лист1, Справочник) Необходимо на Листе1 в колонке "Наименование" получить название кодов через кому с пробелом. Для одного кода все работает нормально. А для двух и более получаю ошибку. Буду благодарен если кто-то окажет помощь с формулой.
Справочник только пример. В оригинальном более 10 тыс. строк
Для второй строки должно выйти наименование таким: Название и, Название а А для третей — Название н, Название д, Название о
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
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
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]
как-то так примерно [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