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

Вход

Регистрация

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

 

= Мир MS Excel/Объединение каждой ячейки столбца А с каждой столбца B - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Объединение каждой ячейки столбца А с каждой столбца B (Формулы/Formulas)
Объединение каждой ячейки столбца А с каждой столбца B
CoreyDoor Дата: Вторник, 17.05.2022, 14:45 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Даны два столбца разных размеров и нужно объединить данные таким образом, чтобы каждая ячейка одного столбца повторялась в каждой ячейке другого столбца. Вопрос обсуждался здесь: 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
Дата добавления - 17.05.2022 в 14:45
китин Дата: Вторник, 17.05.2022, 14:49 | Сообщение № 2
Группа: Модераторы
Ранг: Экселист
Сообщений: 6853
Репутация: 1050 ±
Замечаний: 0% ±

Excel 2007;2010;2016
CoreyDoor, - Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеCoreyDoor, - Прочитайте Правила форума
- Приложите файл с исходными данными и желаемым результатом (можно вручную) в формате Excel размером до 500 кб согласно п.3 Правил форума

Автор - китин
Дата добавления - 17.05.2022 в 14:49
Nic70y Дата: Вторник, 17.05.2022, 14:52 | Сообщение № 3
Группа: Друзья
Ранг: Экселист
Сообщений: 7567
Репутация: 1809 ±
Замечаний: 0% ±

Excel 2010
Код
=ИНДЕКС(A:A;-ЦЕЛОЕ(-СТРОКА(A1)/СЧЁТЗ(B:B)))&ИНДЕКС(B:B;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(B:B))+1)


ЮMoney 41001841029809
 
Ответить
Сообщение
Код
=ИНДЕКС(A:A;-ЦЕЛОЕ(-СТРОКА(A1)/СЧЁТЗ(B:B)))&ИНДЕКС(B:B;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(B:B))+1)

Автор - Nic70y
Дата добавления - 17.05.2022 в 14:52
CoreyDoor Дата: Вторник, 17.05.2022, 14:59 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Прикрепляю файл.
К сообщению приложен файл: 2336457.xlsx(10.8 Kb)
 
Ответить
СообщениеПрикрепляю файл.

Автор - CoreyDoor
Дата добавления - 17.05.2022 в 14:59
CoreyDoor Дата: Вторник, 17.05.2022, 15:03 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Nic70y, К сожалению, Ваша формула не даёт нужного результата. Возвращает только первые строчки из столбцов.
 
Ответить
СообщениеNic70y, К сожалению, Ваша формула не даёт нужного результата. Возвращает только первые строчки из столбцов.

Автор - CoreyDoor
Дата добавления - 17.05.2022 в 15:03
CoreyDoor Дата: Вторник, 17.05.2022, 15:08 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

Nic70y, похоже, что я поспешил с выводами. Нужно было растянуть формулу вниз, чтобы она применилась к следующим данным. Буду пробовать. Спасибо, Nic70y!
 
Ответить
СообщениеNic70y, похоже, что я поспешил с выводами. Нужно было растянуть формулу вниз, чтобы она применилась к следующим данным. Буду пробовать. Спасибо, Nic70y!

Автор - CoreyDoor
Дата добавления - 17.05.2022 в 15:08
Nic70y Дата: Вторник, 17.05.2022, 15:09 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 7567
Репутация: 1809 ±
Замечаний: 0% ±

Excel 2010
ну так "по воздуху писалась"
пример не соот. описанию
Код
=ИНДЕКС(C:C;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(C:C))+1)&ИНДЕКС(F:F;-ЦЕЛОЕ(-СТРОКА(A1)/СЧЁТЗ(C:C))+1)
принцип тот же
К сообщению приложен файл: 7863462.xlsx(11.8 Kb)


ЮMoney 41001841029809
 
Ответить
Сообщениену так "по воздуху писалась"
пример не соот. описанию
Код
=ИНДЕКС(C:C;ОСТАТ(СТРОКА(A1)-1;СЧЁТЗ(C:C))+1)&ИНДЕКС(F:F;-ЦЕЛОЕ(-СТРОКА(A1)/СЧЁТЗ(C:C))+1)
принцип тот же

Автор - Nic70y
Дата добавления - 17.05.2022 в 15:09
китин Дата: Вторник, 17.05.2022, 15:18 | Сообщение № 8
Группа: Модераторы
Ранг: Экселист
Сообщений: 6853
Репутация: 1050 ±
Замечаний: 0% ±

Excel 2007;2010;2016
Nic70y, Николай, ты откуда пустые файлы берешь? у меня вот давно закончились :D


Не судите очень строго:я пытаюсь научиться
ЯД 41001877306852
 
Ответить
СообщениеNic70y, Николай, ты откуда пустые файлы берешь? у меня вот давно закончились :D

Автор - китин
Дата добавления - 17.05.2022 в 15:18
Nic70y Дата: Вторник, 17.05.2022, 15:23 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 7567
Репутация: 1809 ±
Замечаний: 0% ±

Excel 2010
откуда пустые файлы берешь?
я не брал.
"по воздуху писалась"


ЮMoney 41001841029809
 
Ответить
Сообщение
откуда пустые файлы берешь?
я не брал.
"по воздуху писалась"

Автор - Nic70y
Дата добавления - 17.05.2022 в 15:23
msi2102 Дата: Вторник, 17.05.2022, 15:30 | Сообщение № 10
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
Можно PQ
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    Сбор = Text.Combine ( Источник[Столбец1], "|" ),
    Источник1 = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Добавлен = Table.AddColumn(Источник1, "Пользовательский", each Сбор ),
    Раздел = Table.ExpandListColumn(Table.TransformColumns(Добавлен, {{"Пользовательский", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Пользовательский"),
    Объед = Table.AddColumn(Раздел, "Объединённый", each [Столбец1]&[Пользовательский]),
    Удалить = Table.SelectColumns(Объед,{"Объединённый"})
in
    Удалить
[/vba]
К сообщению приложен файл: 1887827.xlsx(21.3 Kb)


Сообщение отредактировал msi2102 - Вторник, 17.05.2022, 15:30
 
Ответить
СообщениеМожно PQ
[vba]
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Таблица3"]}[Content],
    Сбор = Text.Combine ( Источник[Столбец1], "|" ),
    Источник1 = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    Добавлен = Table.AddColumn(Источник1, "Пользовательский", each Сбор ),
    Раздел = Table.ExpandListColumn(Table.TransformColumns(Добавлен, {{"Пользовательский", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Пользовательский"),
    Объед = Table.AddColumn(Раздел, "Объединённый", each [Столбец1]&[Пользовательский]),
    Удалить = Table.SelectColumns(Объед,{"Объединённый"})
in
    Удалить
[/vba]

Автор - msi2102
Дата добавления - 17.05.2022 в 15:30
CoreyDoor Дата: Вторник, 17.05.2022, 15:44 | Сообщение № 11
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

msi2102, Эх, если бы я знал что это. Буду гуглить, собирать информацию, совершенствовать познания. Посмотрел файл, и в Вашем случае при изменении исходных данных, не изменяются заключительные, что не совсем преследует мою цель. Возможно, их можно обновлять, использую Вашу наработку кода, просто я не знаю как. Спасибо за пример решения, msi2102!
 
Ответить
Сообщениеmsi2102, Эх, если бы я знал что это. Буду гуглить, собирать информацию, совершенствовать познания. Посмотрел файл, и в Вашем случае при изменении исходных данных, не изменяются заключительные, что не совсем преследует мою цель. Возможно, их можно обновлять, использую Вашу наработку кода, просто я не знаю как. Спасибо за пример решения, msi2102!

Автор - CoreyDoor
Дата добавления - 17.05.2022 в 15:44
msi2102 Дата: Вторник, 17.05.2022, 15:48 | Сообщение № 12
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
Del


Сообщение отредактировал msi2102 - Вторник, 17.05.2022, 16:13
 
Ответить
СообщениеDel

Автор - msi2102
Дата добавления - 17.05.2022 в 15:48
msi2102 Дата: Вторник, 17.05.2022, 16:02 | Сообщение № 13
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 134
Репутация: 65 ±
Замечаний: 0% ±

Excel 2007
Возможно, их можно обновлять

В ручную см. картинку внизу
Или можете сделать так:
В модуль листа:
[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]
К сообщению приложен файл: 2336457.xlsm(25.9 Kb) · 5441892.png(12.9 Kb)


Сообщение отредактировал msi2102 - Вторник, 17.05.2022, 16:11
 
Ответить
Сообщение
Возможно, их можно обновлять

В ручную см. картинку внизу
Или можете сделать так:
В модуль листа:
[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]

Автор - msi2102
Дата добавления - 17.05.2022 в 16:02
CoreyDoor Дата: Вторник, 17.05.2022, 16:14 | Сообщение № 14
Группа: Пользователи
Ранг: Новичок
Сообщений: 10
Репутация: 0 ±
Замечаний: 20% ±

msi2102, Да, спасибо. Вариант рабочий, можно добавлять данные в реальном времени и изменять размеры таблиц.
 
Ответить
Сообщениеmsi2102, Да, спасибо. Вариант рабочий, можно добавлять данные в реальном времени и изменять размеры таблиц.

Автор - CoreyDoor
Дата добавления - 17.05.2022 в 16:14
прохожий2019 Дата: Вторник, 17.05.2022, 22:01 | Сообщение № 15
Группа: Проверенные
Ранг: Ветеран
Сообщений: 860
Репутация: 206 ±
Замечаний: 0% ±

365 Beta Channel
Можно PQ
[vba]
Код
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)
[/vba]
К сообщению приложен файл: join.xlsm(32.4 Kb)


Сообщение отредактировал прохожий2019 - Вторник, 17.05.2022, 22:11
 
Ответить
Сообщение
Можно PQ
[vba]
Код
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)
[/vba]

Автор - прохожий2019
Дата добавления - 17.05.2022 в 22:01
Мир MS Excel » Вопросы и решения » Вопросы по Excel » Объединение каждой ячейки столбца А с каждой столбца B (Формулы/Formulas)
  • Страница 1 из 1
  • 1
Поиск:

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