2015-05-09 61 views
0

我需要生成一組數字的所有可能的組合,我知道可以使用任何編程語言來生成這個組合。 我想知道萬一有可能在MS Excel中有一個公式?MS Excel:編號排列

例如。爲3位數字123

ColA:ColB 
1 : 123 
2 : 132 
3 : 213 
4 : 231 
5 : 312 
6 : 321 

該解決方案應該是可縮放的,因爲我期望將其用於9位數字。

問候

+1

的Excel在某種意義上是一個函數式語言,有沒有副作用,並且只有當前單元格更新。 9位數字(忽略重複)的可能組合數量爲9!= 362880。假設你可以編寫一個可以選擇第n個排列的公式(你可以使用row()來確定哪一個),你所要做的就是將該公式粘貼到362779單元格中;-) – Lennart

+0

@ Lennart的評論:在那裏有許多公式來列舉排列。任何谷歌搜索Traveling Salesman問題的GPU實現都應該快速完成。 –

+0

@Pieter Geerkens:您能否至少發佈一條鏈接到這樣的Google搜索結果?也許https://sites.google.com/site/e90e50fx/home/combinatorics-using-excel-formulas-and-examples#TOC-Formula-using-help-column-可以提供幫助。但是這不能使用關鍵字「旅行推銷員問題」找到。 –

回答

0

你可以只算號(111111111_111111112 ...),把所有的向下一列,然後對於每一行,使用中間()函數來抓住一個字符,並將其轉換爲文本,每個數字一列。或者做一些劃分和模塊來抓住每個數字。有很多方法。

如果你沒有得到答案,我可以在早上寫出一個公式。 :)

是否允許重複,如111?或者他們都是唯一的數字?

+1

好奇你將如何「把所有的一列」數字111111111,111111112,...,999999999在Excel中;-)。 –

+0

在a1框中鍵入「11111111」和「11111112」。然後選擇範圍(a1:a30)並按ctrl-d。或者雙擊a1的右下角,它應該自動填充該公式。或者,您可以單擊並拖動右下角,並且執行同樣的操作。 –

+0

我自己是「Ctrl-d」選項的粉絲。 –

0

在這裏的一些評論相反,我還沒有找到這個Excel解決方案。因此,這裏是我的方法:

enter image description here

公式:

K1=COUNTA(A1:I1)

A2

=INDEX($A$1:$J$362881,ROW()+$L2,COLUMN()+IF($K2+COLUMN()=$K$1+$K2,-$K2,IF($K2+COLUMN()>=$K$1,1,0))) 

這個公式複製到右邊直到I2

K2

=IF(ROW()<=FACT($K$1),$K$1+1-MATCH(0,MOD(ROW()-1,FACT($K$1+1-{1,2,3,4,5,6,7,8,9})),-1),#N/A) 

L2=-FACT(K2)

行2可根據需要被完全向下複製。

現在在A1:I1我們最多可以輸入9個值,從中計算排列。

這來源於:http://www.excelformeln.de/formeln.html?welcher=325