Сообщение успешно добавлено.

Страницы: 1
RSS
Сцепить значения двух столбцов (один ко многим)
 
Здравствуйте!

Необходимо прописать формулу чтобы склеивались все значения из столбца А и столбца С.
Также в столбце С иногда могут быть пустоты, которые необходимо игнорировать в столбце результата.
Порядок склейки:
1. А2 + С2
2. А3 + С2
3. А4 + С2
4. А5 + С2
5. А2 + С3
и т.п.

Пример прикрепил к сообщению.
Помогите, пожалуйста)
Изменено: Nick grlV - 11.02.2022 20:29:00
 
Nick grlV, в примере очевидно неверный результат (4*5=20) :) Вариант в PQ:
Код
let
  id1     = List.Buffer ( Excel.CurrentWorkbook(){[ Name = "ID_1" ]}[Content][ID1] ),
  id2     = List.RemoveNulls ( Excel.CurrentWorkbook(){[ Name = "ID_2" ]}[Content][ID2] ),
  combine = List.Accumulate ( id2, {}, ( s, c ) => s & List.Transform ( id1, ( x ) => Text.From ( x ) & Text.From ( c ) ) ),
  toTbl   = Table.FromColumns ( { combine }, { "Результат" } )
in
  toTbl
Изменено: surkenny - 11.02.2022 19:53:33
 
Да, точно, спасибо, что указали на ошибку, подправил
Спасибо за вариант решения!

А формулой есть варианты? Эксель на MacOS не воспринимает PQ :(
 
Цитата
Nick grlV написал:
А формулой есть варианты?
Первое что пришло в голову.
Код
=INDEX($A$2:$A$5;MOD(ROWS($F$2:F2)-1;COUNTA($A$2:$A$5))+1)&INDEX(C$2:C$7;MATCH(ROW()-2;INDEX(MMULT(--(ROW(A$2:A$7)>TRANSPOSE(ROW(C$2:C$7)));COUNTA($A$2:$A$5)*ROW($A$2:$A$7)^0*(C$2:C$7<>""));)))

Формула массива.
 
не копируйте, когда цитирование не нужно [МОДЕРАТОР]

При добавлении новых значений в любой из столбцов, формула ломается. Пытался протянуть формулу, но не сработало
Изменено: vikttur - 11.02.2022 22:56:46
 
=IF(ROW()-1>(COUNTA(A:A)-1)*(COUNTA(C:C)-1);"";INDEX(A:A;MOD((ROW()-2);(COUNTA(A:A)-1))+2)&INDEX(C:C;SMALL(IF($C$2:$C$7<>"";ROW($C$2:$C$7));INT((ROW()-2)/(COUNTA(A:A)-1))+1)))
или даже
=IFERROR(INDEX(A:A;MOD((ROW()-2);(COUNTA(A:A)-1))+2)&INDEX(C:C;SMALL(IF($C$2:$C$7<>"";ROW($C$2:$C$7));INT((ROW()-2)/(COUNTA(A:A)-1))+1));"")

Цитата
Nick grlV написал:
При добавлении новых значений в любой из столбцов, формула ломается.
в моих вариатах вместо $C$2:$C$7 нужно использовать динамический диапазон или брать с запасом.
Изменено: БМВ - 11.02.2022 23:05:31
По вопросам из тем форума, личку не читаю.
 
Цитата
Nick grlV написал:
При добавлении новых значений в любой из столбцов, формула ломается.
Просто увеличьте диапазоны, скажем,так:
Код
=INDEX($A$2:$A$100;MOD(ROWS($F$2:F2)-1;COUNTA($A$2:$A$100))+1)&INDEX(B$2:B$100;MATCH(ROW()-2;INDEX(MMULT(--(ROW(A$2:A$100)>TRANSPOSE(ROW(B$2:B$100)));COUNTA($A$2:$A$100)*ROW($A$2:$A$100)^0*(B$2:B$100<>""));)))

Учтите, что с увеличением диапазонов тормоза будут расти пропорционально, ибо формула весьма ресурсоемкая.
 
, , , ребята, всем спасибо за помощь! Очень помогли, всем добра)
 
и кросс
По вопросам из тем форума, личку не читаю.
Страницы: 1

Сообщение успешно добавлено.

Наверх