Excel精英培训网

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

新手询问 代码无法运转 如何修改?

[复制链接]
发表于 2019-4-21 00:36 | 显示全部楼层 |阅读模式
2学分
下面代码 括号里面 一位数时 例如 ar = Split("1 2 5 6 9 0") br = Split("3 4 7 8 1 2") 没有问题 可以运转 但是换成两位数 比如 ar = Split("11 12 15 16 19 10") br = Split("23 24 27 28 21 22") 代码无法运转 因此询问 应当如何修改?

Sub A()
    ar = Split("11 12 15 16 19 10")
    br = Split("23 24 27 28 21 22")
    Dim Cr(400, 0)
    s = Space(40)
    For x1 = 0 To UBound(ar) - 2
    For x2 = x1 + 1 To UBound(ar) - 1
    For x3 = x2 + 1 To UBound(ar)
    For y1 = 0 To UBound(br) - 2
    For y2 = y1 + 1 To UBound(br) - 1
    For y3 = y2 + 1 To UBound(br)
            s1 = s
            Mid(s1, ar(x1) * 4 + 1, 1) = ar(x1)
            Mid(s1, ar(x2) * 4 + 1, 1) = ar(x2)
            Mid(s1, ar(x3) * 4 + 1, 1) = ar(x3)
            Mid(s1, br(y1) * 4 + 3, 1) = br(y1)
            Mid(s1, br(y2) * 4 + 3, 1) = br(y2)
            Mid(s1, br(y3) * 4 + 3, 1) = br(y3)
            For j = 1 To 5
                s1 = Replace(s1, "  ", " ")
            Next
            Cr(n, 0) = Trim(s1)
            n = n + 1
    Next y3, y2, y1, x3, x2, x1
    [a1].Resize(n) = Cr
End Sub



发表于 2019-4-24 10:42 | 显示全部楼层
简单测试了下,Mid(s1, ar(x1) * 4 + 1, 1) = ar(x1)这句就有问题,s1的长度只有40,但 ar(x1) * 4 + 1是 45,明显不行。后面其他的mid都是这个问题
回复

使用道具 举报

发表于 2019-4-25 15:44 | 显示全部楼层
s = Space(40)这句改成s = Space(400)就OK了
回复

使用道具 举报

发表于 2019-5-17 13:30 | 显示全部楼层
  1. Sub A()
  2.     ar = Split("11 12 15 16 19 10")
  3.     br = Split("23 24 27 28 21 22")
  4.     Dim Cr, dr
  5.     ReDim Cr(Application.Combin(UBound(ar) + 1, 3) ^ 2 - 1, 0)
  6.     For x1 = 0 To UBound(ar) - 2
  7.     For x2 = x1 + 1 To UBound(ar) - 1
  8.     For x3 = x2 + 1 To UBound(ar)
  9.     For y1 = 0 To UBound(br) - 2
  10.     For y2 = y1 + 1 To UBound(br) - 1
  11.     For y3 = y2 + 1 To UBound(br)
  12.             ReDim dr(50)
  13.             dr(ar(x1)) = ar(x1)
  14.             dr(ar(x2)) = ar(x2)
  15.             dr(ar(x3)) = ar(x3)
  16.             dr(br(y1)) = br(y1)
  17.             dr(br(y2)) = br(y2)
  18.             dr(br(y3)) = br(y3)
  19.             Cr(n, 0) = Application.Trim(Join(dr))
  20.             n = n + 1
  21.     Next y3, y2, y1, x3, x2, x1
  22.     [a1].Resize(n) = Cr
  23. End Sub
复制代码
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 05:02 , Processed in 0.317736 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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