Сумма всех числовых комбинаций, исключая повторение Excel - PullRequest
0 голосов
/ 27 апреля 2018

этот голос с наибольшим количеством голосов Сумма всех комбинаций Excel или Google Spreadsheets близок к тому, что мне нужно - однако мне нужно решение, в котором он сохраняет комбинации в порядке и исключает повторение на основе этого порядка. то есть набор данных 1 2 3 4 будет показывать произведение:

1 1 + 2 1 + 3 1 + 4 1 + 2 + 3 1 + 2 + 4 1 + 3 + 4 1 + 2 + 3 + 4

2 2 + 3 2 + 4 2 + 3 + 4

3 3 + 4

4

* 1015 то есть *

1 3 4 5 6 10

2 5 6

3 7

4

Возможно ли это в Google Sheets / Excel без скрипта?

Спасибо

1 Ответ

0 голосов
/ 27 апреля 2018

Вот формула для отображения сумм в порядке

=ArrayFormula(sort(" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),B1:B15&";"}),"+;",";"),";+",";"),";")),1,true))

enter image description here

Эта формула даст итоговые суммы в том порядке, в котором они были сгенерированы, но затем ее необходимо будет объединить с первой формулой, чтобы получить их в правильном порядке.

=ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,column(A1:D1)),transpose(column(A1:D1))^0))

Даю это

=ArrayFormula(sort({" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),B1:B15&";"}),"+;",";"),";+",";"),";")),ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,column(A1:D1)),transpose(column(A1:D1))^0))},1,true))

enter image description here

Вот как бы выглядело, если бы вы использовали фактические значения, а не номера столбцов

=ArrayFormula(sort({" "&transpose(split(SUBSTITUTE(substitute(textjoin("+",true,{if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,"",column(A1:D1)),if(row(A1:A15)>0,";")}),"+;",";"),";+",";"),";")),ArrayFormula(mmult(if(mod(int(row(A1:A15)/(2^(column(A1:D1)-1))),2)=0,0,A1:D1),transpose(column(A1:D1))^0))},1,true))

enter image description here

...