Даны два столбца разных размеров и нужно объединить данные таким образом, чтобы каждая ячейка одного столбца повторялась в каждой ячейке другого столбца. Вопрос обсуждался здесь: http://www.excelworld.ru/forum/2-9740-1#top , но ответа по нему не было. Вроде, решение кажется несложным, но я не могу с этим справиться. Допустим: Надо: А B С 1 1,50 Белый 1,50Белый 2 1,60 Синий 1,50Синий 3 1,70 1,60Белый 4 1,80 1,60Синий 5 1,90 1,70Белый 1,70Синий Ну и так далее. В вопросе в ссылке это лучше объяснено.
Даны два столбца разных размеров и нужно объединить данные таким образом, чтобы каждая ячейка одного столбца повторялась в каждой ячейке другого столбца. Вопрос обсуждался здесь: http://www.excelworld.ru/forum/2-9740-1#top , но ответа по нему не было. Вроде, решение кажется несложным, но я не могу с этим справиться. Допустим: Надо: А B С 1 1,50 Белый 1,50Белый 2 1,60 Синий 1,50Синий 3 1,70 1,60Белый 4 1,80 1,60Синий 5 1,90 1,70Белый 1,70Синий Ну и так далее. В вопросе в ссылке это лучше объяснено.CoreyDoor
CoreyDoor, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума
CoreyDoor, - Прочитайте Правила форума - Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форумакитин
Не судите очень строго:я пытаюсь научиться ЯД 41001877306852
Nic70y, похоже, что я поспешил с выводами. Нужно было растянуть формулу вниз, чтобы она применилась к следующим данным. Буду пробовать. Спасибо, Nic70y!
Nic70y, похоже, что я поспешил с выводами. Нужно было растянуть формулу вниз, чтобы она применилась к следующим данным. Буду пробовать. Спасибо, Nic70y!CoreyDoor
msi2102, Эх, если бы я знал что это. Буду гуглить, собирать информацию, совершенствовать познания. Посмотрел файл, и в Вашем случае при изменении исходных данных, не изменяются заключительные, что не совсем преследует мою цель. Возможно, их можно обновлять, использую Вашу наработку кода, просто я не знаю как. Спасибо за пример решения, msi2102!
msi2102, Эх, если бы я знал что это. Буду гуглить, собирать информацию, совершенствовать познания. Посмотрел файл, и в Вашем случае при изменении исходных данных, не изменяются заключительные, что не совсем преследует мою цель. Возможно, их можно обновлять, использую Вашу наработку кода, просто я не знаю как. Спасибо за пример решения, msi2102!CoreyDoor
В ручную см. картинку внизу Или можете сделать так: В модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, ActiveSheet.ListObjects("Таблица1").DataBodyRange) Is Nothing Or Not Intersect(Target, ActiveSheet.ListObjects("Таблица3").DataBodyRange) Is Nothing Then ActiveWorkbook.RefreshAll End If End Sub
[/vba] Немного подправил запрос: [vba]
Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Тип = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}), Сбор = Text.Combine ( Тип[Столбец1], "|" ), Источник1 = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content], Добавлен = Table.AddColumn(Источник1, "Пользовательский", each Сбор ), Тип1 = Table.TransformColumnTypes(Добавлен,{{"Столбец1", type text}}), Раздел = Table.ExpandListColumn(Table.TransformColumns(Тип1, {{"Пользовательский", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Пользовательский"), Объед = Table.AddColumn(Раздел, "Объединённый", each [Пользовательский]&[Столбец1]), Удалить = Table.SelectColumns(Объед,{"Объединённый"}) in Удалить
В ручную см. картинку внизу Или можете сделать так: В модуль листа: [vba]
Код
Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, ActiveSheet.ListObjects("Таблица1").DataBodyRange) Is Nothing Or Not Intersect(Target, ActiveSheet.ListObjects("Таблица3").DataBodyRange) Is Nothing Then ActiveWorkbook.RefreshAll End If End Sub
[/vba] Немного подправил запрос: [vba]
Код
let Источник = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content], Тип = Table.TransformColumnTypes(Источник,{{"Столбец1", type text}}), Сбор = Text.Combine ( Тип[Столбец1], "|" ), Источник1 = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content], Добавлен = Table.AddColumn(Источник1, "Пользовательский", each Сбор ), Тип1 = Table.TransformColumnTypes(Добавлен,{{"Столбец1", type text}}), Раздел = Table.ExpandListColumn(Table.TransformColumns(Тип1, {{"Пользовательский", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Пользовательский"), Объед = Table.AddColumn(Раздел, "Объединённый", each [Пользовательский]&[Столбец1]), Удалить = Table.SelectColumns(Объед,{"Объединённый"}) in Удалить
let f=(x)=>Excel.CurrentWorkbook(){[Name=x]}[Content], g=(x)=>{Text.Combine(List.Reverse(List.Transform(x,Text.From)))}, join = Table.Join(f("Таблица3"),{},Table.PrefixColumns(f("Таблица1"),"i"),{}), to = Table.FromList(Table.ToRows(join),g,1) in to
[/vba]или хулиганство [vba]
Код
let f=(x)=>Excel.CurrentWorkbook(){[Name=x]}[Content][Столбец1], g=(x,y)=>Text.From(y)&Text.From(x), h=List.Buffer(f("Таблица1")) in List.TransformMany(f("Таблица3"),(x)=>h,g)
let f=(x)=>Excel.CurrentWorkbook(){[Name=x]}[Content], g=(x)=>{Text.Combine(List.Reverse(List.Transform(x,Text.From)))}, join = Table.Join(f("Таблица3"),{},Table.PrefixColumns(f("Таблица1"),"i"),{}), to = Table.FromList(Table.ToRows(join),g,1) in to
[/vba]или хулиганство [vba]
Код
let f=(x)=>Excel.CurrentWorkbook(){[Name=x]}[Content][Столбец1], g=(x,y)=>Text.From(y)&Text.From(x), h=List.Buffer(f("Таблица1")) in List.TransformMany(f("Таблица3"),(x)=>h,g)