EXCEL的VBA穷举代码

2024-05-10

1. EXCEL的VBA穷举代码

一定要用VBA么,这个用规划求解很容易做,参照网页链接

EXCEL的VBA穷举代码

2. EXCEL怎样一键穷举

如果12个数里面选择出4个数进行排列组合,其个数应为:C=12*11*10*9=11880,其VBA代码如下:
Sub Qiong()Dim i, j, k, l, m As LongDim a, b, c, d As Stringm = 0Set mysheet1 = ThisWorkbook.Worksheets("Sheet1")For i = 1 To 12For j = 1 To 12For k = 1 To 12For l = 1 To 12a = Choose(i, "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "D1", "D2", "D3")If j  i Thenb = Choose(j, "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "D1", "D2", "D3")If k  i And k  j Thenc = Choose(k, "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "D1", "D2", "D3")If l  i And l  j And l  k Thend = Choose(l, "A1", "A2", "A3", "B1", "B2", "B3", "C1", "C2", "C3", "D1", "D2", "D3")m = m + 1mysheet1.Cells(m, 5) = a & b & c & dEnd IfEnd IfEnd IfNextNextNextNextEnd Sub类似的例子参见百度经验链接:《Excel表格上面使用VBA进行数组组合 》

3. EXCEL(是不是要用穷举法?)列出所有可能的组合,求公式或者BVA程序代码

A列输入数据,点击按钮,E列后出结果


EXCEL(是不是要用穷举法?)列出所有可能的组合,求公式或者BVA程序代码

4. 在excel中数值穷举选5的循环代码如下图:

嵌套循环呗。
Function getCom(lngTotal As Long)
Dim a As Long, b As Long, c As Long, d As Long, e As Long
For a = 1 To lngTotal
    For b = a + 1 To lngTotal
        For c = b + 1 To lngTotal
            For d = c + 1 To lngTotal
                For e = d + 1 To lngTotal
’这里是在VBE的立即窗体里显示,如果需要在别的地方显示,需要修改代码。
                    Debug.Print a & " " & b & " " & c & " " & d & " " & e
                Next e
            Next d
        Next c
    Next b
Next a
End Function
调用函数
Sub test()
Call getCom(7)
End Sub

5. 菜鸟求教,用Excel穷举法怎么解决这个问题?

关注,excel还能解决这个?

菜鸟求教,用Excel穷举法怎么解决这个问题?

6. EXCEL如何穷举数列

代码及注释如下:
Sub a()
Dim i%, j%, k%'定义变量为整理
k = 1'从1开始显示所有组合
For i = 1 To [a65536].End(3).Row'i从1到A列从底往上第一个不为空的行号为止循环
    For j = 1 To [d65536].End(3).Row'j从1到D列从底往上第一个不为空的行号为止循环
         Range("A" & i & ":C" & i).Copy Range("H" & k)'i行A列到C列区域,复制到H行从第1行开始的区域
         Range("D" & j & ":F" & j).Copy Range("K" & k)'j行D列到F列区域,复制到K行从第一样开始的区域
         k = k + 1'每完成上述操作,行数增加1
    Next j
Next i
End Sub

7. excel排列组合穷举

1、排列数就是3+3+3+3=3*4=12
2、用VBA简单,若用EXCEL公式也可就是麻烦一点。
   C1
   =MID("高中低",MOD(INT((COLUMN(A1)-1)/4)+1+INT((ROW(A1)+MOD(COLUMN(A1)-1,4)-1)/4)-1,3)+1,1)右拉填充至N1,再一起下拉填充4行。

excel排列组合穷举

8. 看了关于你的EXCEL穷举公式,非常感谢。不知道能不能帮我把4列和5列的公司也写出来呢?

4列:
=IF(ROUNDUP(ROW(A1)/(COUNTA(B:B)*COUNTA(C:C)*COUNTA(D:D)),0)<=COUNTA(A:A),OFFSET(A$1,INT((ROW(A1)-1)/(COUNTA(B:B)*COUNTA(C:C)*COUNTA(D:D))),)&OFFSET(B$1,MOD(INT((ROW(A1)-1)/(COUNTA(C:C)*COUNTA(D:D))),COUNTA(B:B)),)&OFFSET(C$1,MOD(INT((ROW(A1)-1)/COUNTA(D:D)),COUNTA(C:C)),)&OFFSET(D$1,MOD(ROW(A1)-1,COUNTA(D:D)),),"")
 
5列:
=IF(ROUNDUP(ROW(A1)/(COUNTA(B:B)*COUNTA(C:C)*COUNTA(D:D)*COUNTA(E:E)),0)<=COUNTA(A:A),OFFSET(A$1,INT((ROW(A1)-1)/(COUNTA(B:B)*COUNTA(C:C)*COUNTA(D:D)*COUNTA(E:E))),)&OFFSET(B$1,MOD(INT((ROW(A1)-1)/(COUNTA(C:C)*COUNTA(D:D)*COUNTA(E:E))),COUNTA(B:B)),)&OFFSET(C$1,MOD(INT((ROW(A1)-1)/(COUNTA(D:D)*COUNTA(E:E))),COUNTA(C:C)),)&OFFSET(D$1,MOD(INT((ROW(A1)-1)/COUNTA(E:E)),COUNTA(D:D)),)&OFFSET(E$1,MOD(ROW(A1)-1,COUNTA(E:E)),),"")