excelvba。需要一个宏来随机排列(3p3)3次而不重复任何排列 我有9个细胞(我在3组中考虑),每个组包含字母A、B和C。在3个组之间的顺序是平衡的,使得没有字母在同一位置上两次,例如:

excelvba。需要一个宏来随机排列(3p3)3次而不重复任何排列 我有9个细胞(我在3组中考虑),每个组包含字母A、B和C。在3个组之间的顺序是平衡的,使得没有字母在同一位置上两次,例如:,vba,excel,Vba,Excel,A B C C A B A C 我还有另外3个单元格,其中包含字母d、e和f。我想用以下规则将d、e和f分配给A、B和C: d、 e和f在每组内各重复一次 d、 e和f分别与A、B和C组合一次 例如: Ad Be Cf Ce Af Bd Bf Ae Cd 基本上,我想写一个VBA宏,它给我随机赋值的def到一个遵循这些规则的bc。我希望宏通过将包含def的单元格放在包含bc的单元格下面来显示这一点 很抱歉,我甚至还没有尝试编写代码来实现这一点,如果这是一个有点混乱/格式不好的问题,也很抱歉。我是

A B C C A B A C

我还有另外3个单元格,其中包含字母d、e和f。我想用以下规则将d、e和f分配给A、B和C:

  • d、 e和f在每组内各重复一次
  • d、 e和f分别与A、B和C组合一次
  • 例如:

    Ad Be Cf Ce Af Bd Bf Ae Cd

    基本上,我想写一个VBA宏,它给我随机赋值的def到一个遵循这些规则的bc。我希望宏通过将包含def的单元格放在包含bc的单元格下面来显示这一点

    很抱歉,我甚至还没有尝试编写代码来实现这一点,如果这是一个有点混乱/格式不好的问题,也很抱歉。我是VBA和stackexchange的新手,在解释这个问题时遇到了一些困难


    干杯

    如果一行开头有四个空格,则该行将以固定大小的字体输出。这用于编写代码,但也允许您创建所需内容的图像。我最好的猜测是你有这样的东西:

       |  A  |  B  |  C  |  D  |  E  |  F  |  G  |  H  |  I  |  J  |
     --+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
     1 |  A  |  B  |  C  |     |     |     |  d  |  e  |  f  |     |
     2 |     |     |     |     |     |     |     |     |     |     |
     3 |     |     |     |     |     |     |     |     |     |     |
    
    从该起始位置,以下代码创建:

       |  A  |  B  |  C  |  D  |  E  |  F  |  G  |  H  |  I  |  J  |
     --+-----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
     1 |  A  |  B  |  C  |     |     |     |  d  |  e  |  f  |     |
     2 |     |     |     |     |     |     |     |     |     |     |
     3 |  Ad |  Ae |  Af |  Bd |  Be |  Bf |  Cd |  Ce |  Cf |     |
    
    我的输出值的顺序与您的不同,但这不在规则列表中

    你说你有三个版本的第一组值,每个可能的序列一个。你没有解释第二和第三版本的目的,所以我没有包括它们

    如果这不是你想要的,你必须提供一个更充分的解释你的要求

    Option Explicit
    Sub Permutate()
    
      Dim ColDestCrnt As Long
    
      Dim ColSrc1First As Long
      Dim ColSrc1Crnt As Long
      Dim ColSrc1Last As Long
    
      Dim ColSrc2First As Long
      Dim ColSrc2Crnt As Long
      Dim ColSrc2Last As Long
    
      Dim RowSrc1 As Long
      Dim RowSrc2 As Long
      Dim RowDest As Long
    
      ' Specify the position of the first set of source values
      RowSrc1 = 1
      ColSrc1First = 1      ' Column A
      ColSrc1Last = 3       ' Column C
    
      ' Specify the position of the second set of source values
      RowSrc2 = 1
      ColSrc2First = 6      ' Column F
      ColSrc2Last = 8       ' Column H
    
      ' Specify the start the destination
      RowDest = 3
      ColDestCrnt = 1
    
      With Worksheets("Sheet1")
    
        ' Loop through first set of values and within that loop through
        ' the second set.
        For ColSrc1Crnt = ColSrc1First To ColSrc1Last
          For ColSrc2Crnt = ColSrc2First To ColSrc2Last
            ' Combine one value from the first set with one value in the second set.
            .Cells(RowDest, ColDestCrnt).Value = _
                 .Cells(RowSrc1, ColSrc1Crnt).Value & _
                 .Cells(RowSrc2, ColSrc2Crnt).Value
            ColDestCrnt = ColDestCrnt + 1
          Next
        Next
      End With
    
    End Sub       
    

    这似乎是的复制品。如果不是,你需要解释为什么你的要求不同。我很难理解这个线程,但我认为这是不同的,因为a)我想随机生成这些排列,而不是列出所有排列,b)我只想要三组三个的完整排列,它们遵守我列出的规则,也就是说,Ad Be Cf Ce Af Bd Bf Ae Cd是一种解决方案,因为它有9个columns@Luke如果我的回答有帮助,我很高兴,但我不明白为什么。你的问题很简单,我不会费心创建一个程序来解决它。真正的问题是否更复杂,但您相信可以修改我的代码来解决它?