ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2473|回复: 4

[问卷征集] 有6列数据,每列出n个进行一一组合。

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-11-1 11:23 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
500财富
从B列到H列6列数,每列不超过9个数。
如何实现:每列各出n个数(n<4)进行一一组合,列出所有组合。

最佳答案

查看完整内容

Public ihang As Integer Public ilie As Integer Public itemp As Integer Public sh2 As Worksheet Sub main() Application.ScreenUpdating = False Set sh2 = Sheets(2) Dim icount As Integer Dim inum As Integer Dim a(1 To 6) As Integer, b(1 To 6) As Integer Dim k1%, k2%, k3&, k4%, k5%, k6% Dim k(1 To 6) As Integer Dim iout As Integer iout_lie = 11 ...

TA的精华主题

TA的得分主题

发表于 2010-11-1 11:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Public ihang As Integer
Public ilie As Integer
Public itemp As Integer

Public sh2 As Worksheet




Sub main()
Application.ScreenUpdating = False



Set sh2 = Sheets(2)
Dim icount As Integer
Dim inum As Integer
Dim a(1 To 6) As Integer, b(1 To 6) As Integer

Dim k1%, k2%, k3&, k4%, k5%, k6%
Dim k(1 To 6) As Integer

Dim iout As Integer

iout_lie = 11
iout_hang = 2



For i = 1 To 6
icount = Application.WorksheetFunction.CountA(Range(Cells(3, i + 1), Cells(11, i + 1)))
inum = Sheets(1).Cells(2, i + 1).Value
b(i) = inum
a(i) = Sheets(1).Cells(12, i + 1)

' Debug.Print icount
'Debug.Print inum


ihang = 1
ilie = 1 + 4 * (i - 1)
If inum > 0 Then
mycomb 1, icount, inum

End If
Next i






  For k1 = 1 To a(1)
     For k2 = 1 To a(2)
         For k3 = 1 To a(3)
         
             For k4 = 1 To a(4)
              For k5 = 1 To a(5)
               For k6 = 1 To a(6)
               
               
               
               
               
               
                temp = iout_lie
               
                For i = 1 To 6
                  If (b(i) > 0) Then
                  For j = 1 To b(i)
                  k(1) = k1
                  k(2) = k2
                  k(3) = k3
                  k(4) = k4
                  k(5) = k5
                  k(6) = k6
                  
                    Sheets(1).Cells(iout_hang, iout_lie).Value = Sheets(1).Cells(sh2.Cells(k(i), 4 * (i - 1) + j) + 2, i + 1)
                    iout_lie = iout_lie + 1
                    Next j
                  End If
               
                Next i
                  
                iout_lie = temp
               
                If (iout_hang = 65536) Then
                  iout_hang = 0
                  iout_lie = iout_lie + 16
                End If
               
               
                iout_hang = iout_hang + 1
               
               
               
               
               Next k6
                Next k5
            Next k4
        Next k3
    Next k2
Next k1
        
               


'输出







Application.ScreenUpdating = True
MsgBox "计算完成!!!"

   
End Sub

Function mycomb(ByVal iStart As Integer, iEnd As Integer, Num As Integer, Optional Str As String)
    Dim i As Integer, j As Integer
   
    If Num = 0 Then
     itemp = ilie
        For j = 1 To Len(Str)
      
        sh2.Cells(ihang, ilie).Value = Mid(Str, j, 1)
        ilie = ilie + 1
        Next j
        ihang = ihang + 1
        ilie = itemp
        
        
        
    Else
        For i = iStart To iEnd
            DoEvents

            mycomb i + 1, iEnd, Num - 1, Str & i

        Next
    End If
End Function

TA的精华主题

TA的得分主题

发表于 2010-11-1 11:35 | 显示全部楼层
第一:无附件;第二:题意不明;第三:楼主悬赏500财富,本身财富不到114。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-11-1 15:01 | 显示全部楼层
我也纳闷,悬赏帖一出就扣了500财富,我估摸着是打进了一个类似“支付宝”之类的东西,以防反悔。
知道真相的可否出来解释一下。

TA的精华主题

TA的得分主题

发表于 2010-11-1 18:53 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-7 09:50 , Processed in 0.030381 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表