ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 写出从7个元素中任取N个的全部可能

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-6-27 18:59 | 显示全部楼层 |阅读模式
本帖最后由 天地一相 于 2024-6-27 19:59 编辑

感谢帮助。详见截图附件。
组合.PNG

组合.rar

6.38 KB, 下载次数: 23

头像被屏蔽

TA的精华主题

TA的得分主题

发表于 2024-6-27 19:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

TA的精华主题

TA的得分主题

发表于 2024-6-27 19:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 yjh_27 于 2024-6-27 20:26 编辑
  1. Sub aa()
  2. j = 0
  3. For i = 2 To 7
  4. brr = ArrCP0(7, i, 41, 1, 1)
  5. Range("A5").Resize(1, UBound(brr)).Offset(0, j) = WorksheetFunction.Transpose(brr) '输出
  6. j = j + UBound(brr)
  7. Next
  8. End Sub
复制代码
自定义函数 见


n取m 自定义函数 随机 组合 排列 分组 分配
https://club.excelhome.net/thread-1526867-1-1.html
(出处: ExcelHome技术论坛)

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-27 19:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-6-27 19:52 | 显示全部楼层
Option Explicit
Sub test()
    Dim i&, j&, ar(), dr(), er(), vResult(), r, t#
   
    t = Timer
    ReDim dr(1 To 7)
    For i = 1 To 7
        dr(i) = i
    Next i
   
    For i = 2 To UBound(dr)
        ReDim er(1 To i)
        ReDim vResult(1 To WorksheetFunction.Combin(UBound(dr), i))
        combinArr dr, er, vResult, i
        For j = 1 To UBound(vResult)
            r = r + 1
            ReDim Preserve ar(1 To r)
            ar(r) = vResult(j)
        Next j
    Next i

    Rows(5).Clear
    [A5].Resize(, UBound(ar)) = ar
  
    MsgBox "执行完毕!_用时:  " & Format(Timer - t, "0.00") & "  秒,共发现 " & r & " 组", 64
End Sub
Function combinArr(ByRef ar(), ByRef br(), ByRef cr(), ByVal n&, Optional _
    ByRef iGroup&, Optional ByVal iStart&, Optional ByVal iNum& = 1)
   
    Dim i&, j&
    For i = iStart + 1 To UBound(ar) - n + iNum
        If iNum < n Then
           br(iNum) = ar(i)
           Call combinArr(ar, br, cr, n, iGroup, i, iNum + 1)
        Else
           br(iNum) = ar(i)
           iGroup = iGroup + 1
           cr(iGroup) = Join(br, "")
        End If
    Next
End Function

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-27 19:52 | 显示全部楼层
请参考。。。

组合.rar

14.87 KB, 下载次数: 20

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-27 19:58 | 显示全部楼层

谢谢,牛!看了你的代码,我的就笨死了。我是用5个循环解决的(5种取法)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-6-27 20:02 | 显示全部楼层

看不懂了,给个附件瞅瞅呀

TA的精华主题

TA的得分主题

发表于 2024-6-27 20:08 | 显示全部楼层
感觉和这个有点类似
  1. https://club.excelhome.net/thread-1607654-1-1.html?_dsign=1eb6babf
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-6-27 20:27 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 23:29 , Processed in 0.047498 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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