萬盛學電腦網

 萬盛學電腦網 >> Excel教程 >> excel綜合 >> Excel排列函數permut

Excel排列函數permut

   一、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

copyright © 萬盛學電腦網 all rights reserved