Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3137|回复: 4

[已解决]读取A列单元格数据按照3个数字为一组不重复排列,详情见附件。

[复制链接]
发表于 2021-2-27 13:00 | 显示全部楼层 |阅读模式
现在的代码我是用循环1-28自动排列,我想在A列读取数据排列,不知道怎么写。是不是要用到字典,请老师帮忙一下这个困扰我多天的问题。
最佳答案
2021-2-27 16:18
Dim arr, brr(3), r
Sub x()
   arr = Range("A1").Resize(Range("A65536").End(xlUp).Row)
   r = 0: Call com(1, 0)
End Sub
Sub com(k As Integer, n As Integer)
   If n < 3 Then
      For i = k To UBound(arr) - 2 + n
         brr(n) = arr(i, 1)
         Call com(i + 1, n + 1)
      Next
   Else
      r = r + 1
      Cells(r, 2).Resize(1, 3) = brr
   End If
End Sub

祝順心,南無阿彌陀佛!



分组排列.rar

49.07 KB, 下载次数: 12

发表于 2021-2-27 16:18 | 显示全部楼层    本楼为最佳答案   
Dim arr, brr(3), r
Sub x()
   arr = Range("A1").Resize(Range("A65536").End(xlUp).Row)
   r = 0: Call com(1, 0)
End Sub
Sub com(k As Integer, n As Integer)
   If n < 3 Then
      For i = k To UBound(arr) - 2 + n
         brr(n) = arr(i, 1)
         Call com(i + 1, n + 1)
      Next
   Else
      r = r + 1
      Cells(r, 2).Resize(1, 3) = brr
   End If
End Sub

祝順心,南無阿彌陀佛!



分组排列.rar

48.95 KB, 下载次数: 10

回复

使用道具 举报

 楼主| 发表于 2021-2-27 18:55 | 显示全部楼层
cutecpu 发表于 2021-2-27 16:18
Dim arr, brr(3), r
Sub x()
   arr = Range("A1").Resize(Range("A65536").End(xlUp).Row)

厉害,就是我想要的结果,不过看的有点懵。
For i = k To UBound(arr) - 2 + n
这句话的k代表什么?老师能帮我注释一下吗?
回复

使用道具 举报

发表于 2021-2-27 21:09 | 显示全部楼层
fls996 发表于 2021-2-27 18:55
厉害,就是我想要的结果,不过看的有点懵。
For i = k To UBound(arr) - 2 + n
这句话的k代表什么?老 ...

For i = k To UBound(arr) - 2 + n

k 當代表當層(n)迴圈的起始值

相當於你寫 3 層迴圈時,如下:

for i1 = 1 to 28 - 2 + 0
   for i2= i1+1 to 28 - 2 + 1
       for i3= i2+1 to 28 - 2 + 2

祝順心,南無阿彌陀佛!
回复

使用道具 举报

 楼主| 发表于 2021-2-28 14:56 | 显示全部楼层
cutecpu 发表于 2021-2-27 21:09
For i = k To UBound(arr) - 2 + n

k 當代表當層(n)迴圈的起始值

谢谢您

评分

参与人数 1学分 +2 收起 理由
cutecpu + 2 不客氣。祝順心,南無阿彌陀佛!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-30 04:13 , Processed in 0.309787 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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