我需要生成一組數字的所有可能的組合,我知道可以使用任何編程語言來生成這個組合。 我想知道萬一有可能在MS Excel中有一個公式?MS Excel:編號排列
例如。爲3位數字123
ColA:ColB
1 : 123
2 : 132
3 : 213
4 : 231
5 : 312
6 : 321
該解決方案應該是可縮放的,因爲我期望將其用於9位數字。
問候
我需要生成一組數字的所有可能的組合,我知道可以使用任何編程語言來生成這個組合。 我想知道萬一有可能在MS Excel中有一個公式?MS Excel:編號排列
例如。爲3位數字123
ColA:ColB
1 : 123
2 : 132
3 : 213
4 : 231
5 : 312
6 : 321
該解決方案應該是可縮放的,因爲我期望將其用於9位數字。
問候
你可以只算號(111111111_111111112 ...),把所有的向下一列,然後對於每一行,使用中間()函數來抓住一個字符,並將其轉換爲文本,每個數字一列。或者做一些劃分和模塊來抓住每個數字。有很多方法。
如果你沒有得到答案,我可以在早上寫出一個公式。 :)
是否允許重複,如111?或者他們都是唯一的數字?
好奇你將如何「把所有的一列」數字111111111,111111112,...,999999999在Excel中;-)。 –
在a1框中鍵入「11111111」和「11111112」。然後選擇範圍(a1:a30)並按ctrl-d。或者雙擊a1的右下角,它應該自動填充該公式。或者,您可以單擊並拖動右下角,並且執行同樣的操作。 –
我自己是「Ctrl-d」選項的粉絲。 –
在這裏的一些評論相反,我還沒有找到這個Excel解決方案。因此,這裏是我的方法:
公式:
在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個值,從中計算排列。
的Excel在某種意義上是一個函數式語言,有沒有副作用,並且只有當前單元格更新。 9位數字(忽略重複)的可能組合數量爲9!= 362880。假設你可以編寫一個可以選擇第n個排列的公式(你可以使用row()來確定哪一個),你所要做的就是將該公式粘貼到362779單元格中;-) – Lennart
@ Lennart的評論:在那裏有許多公式來列舉排列。任何谷歌搜索Traveling Salesman問題的GPU實現都應該快速完成。 –
@Pieter Geerkens:您能否至少發佈一條鏈接到這樣的Google搜索結果?也許https://sites.google.com/site/e90e50fx/home/combinatorics-using-excel-formulas-and-examples#TOC-Formula-using-help-column-可以提供幫助。但是這不能使用關鍵字「旅行推銷員問題」找到。 –