一、permut語法
PERMUT(number,number_chosen)
Number 表示對象個數的正整數。
Number_chosen 表示每個排列中對象個數的正整數。
參數說明:
如兩個參數為非整數,將被截尾取整。
如果 number 或 number_chosen 為非數值類型,函數 PERMUT 將返回錯誤值 #VALUE!。
如果 number ≤ 0 或 number_chosen < 0,函數 PERMUT 將返回錯誤值 #NUM!。
如果 number < number_chosen,函數 PERMUT 將返回錯誤值 #NUM!。
該函數的功能與數學上的排列概念,是一致的,只不過,此函數僅返回排列個數,而不會給出具體的排列方法。
二、PERMUT實例
比如,出3個隊員中,選出兩個隊員來排隊,共有幾種排隊方法,這就是排列,與順序有關,順序不同,則視為不同的排列方法。
我們可以使用公式: =PERMUT(3,2)即可得出結果,6
我們現在使用人工排列來理解此函數的排列方法,假設這三個隊員的名字分別為A、B、C
那麼,排列的方案共為如此六種方法:
1、A,B 2、A,C 3、B,C 4、B,A 5、C,A 6、C,B
注意,該函數只返回排列的個數,不會給出具體的排列方法。
如果你想了解排列的方案,只能使用VBA來實現,請看代碼:
for i =1 to 6
for ii = 2 to 7
for iii = 3 to 8
for iiii = 4 to 9
cells(k+1,1) = i & ii & iii & iiii
k = k+1
next iiii,iii,ii,i
此代碼的功能為,從9個對象裡面,任何選擇4個來排列的方案。
代碼在VBA環境下使用,會在當前工作表中的單元格裡面自動填充出排列的方案。
下面,再給你看看其它的排列的VBA代碼:
Sub 排列例子1()
Dim a(1 To 7) As String '待排列字符
Dim result(1 To 7) As String '暫存結果
Dim i As Integer '循環變量
Set resCol = New Collection '初始化結果集合
a(1) = "A" '初始化待排列字符
a(2) = "B"
a(3) = "C"
a(4) = "D"
a(5) = "E"
a(6) = "F"
a(7) = "G"
Insert result, a '排列
Sheets(1).Columns("A:A").ClearContents '清理結果位置,准備輸出結果
For i = 1 To resCol.Count '將結果輸出,因為在Excel中,所以輸出到單元格
Sheets(1).Cells(i, 1) = resCol(i) '如果不是在Excel,可以輸出到需要的地方
Next
End Sub
Sub 排列例子2()
Dim a() As String '待排列字符
Dim result() As String '暫存結果
Dim Total As Integer '總共多少個字符
Dim i As Integer '循環變量
Total = Sheets(2).Cells(1, 1) '獲取總共的字符數
If Total > 26 Then
MsgBox "字符數太多,超出程序設計"
Exit Sub
End If
Set resCol = New Collection '初始化結果集合
ReDim a(1 To Total) '根據總字符數重新定義數組
ReDim result(1 To Total)
For i = 1 To Total
a(i) = Chr(i + 64) '初始化待排列字符
Next i
Insert result, a '排列
Sheets(2).Columns("B:B").ClearContents '清理結果位置,准備輸出結果
For i = 1 To resCol.Count '將結果輸出,因為在Excel中,所以輸出到單元格
Sheets(2).Cells(i, 2) = resCol(i) '如果不是在Excel,可以輸出到需要的地方
Next
End Sub