Dzwebs.Net

撰写电脑技术杂文十余年

Excel排列函数permut

Admin | 2012-2-27 9:32:23 | 被阅次数 | 10059

温馨提示!

如果未能解决您的问题,请点击搜索;登陆可复制文章,点击登陆

  permut函数,其功能是返回从给定数目的对象集合中选取的若干对象的排列数。

  排列为有内部顺序的对象或事件的任意集合或子集。排列与组合不同,组合的内部顺序无意义。

  本教程给你介绍排列,如果你想了解组合,请参阅此文:http://www.dzwebs.net/3753.html

  下面,讲述排列函数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


该杂文来自: Excel杂文

上一篇:Excel组合函数combin

下一篇:半角全角互转函数jis和asc

网站备案号:

网站备案号:滇ICP备11001339号-7

版权属性:

Copyright 2007-2021-forever Inc. all Rights Reserved.

联系方式:

Email:dzwebs@126.com QQ:83539231 访问统计