Excel精英培训网

 找回密码
 注册

QQ登录

只需一步,快速开始

你正在寻找更好的Excel学习教程吗?Excel技巧80集+数据透视表+函数初中高全套+VBA80集,想学的这儿全都有
查看: 519|回复: 12

[VBA] [已解决]VBA蓝底单元格输入数字全排列 再容错

[复制链接]
发表于 2017-1-8 22:46 | 显示全部楼层 |阅读模式
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
本帖最后由 laoau138 于 2017-1-10 13:54 编辑

VBA蓝底单元格输入数字全排列   再容错



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
grf1973发布于 2017-1-10 20:16 |显示全部回帖
  1. Sub 容错输出()
  2.     bw = Join(Application.Transpose(Application.Transpose([b1:k1])), "")   '百位
  3.     sw = Join(Application.Transpose(Application.Transpose([b2:k2])), "")   '百位
  4.     gw = Join(Application.Transpose(Application.Transpose([b3:k3])), "")   '个位
  5.     Dim arr(1 To 1000, 1 To 3)
  6.     cmin = [n2]: cmax = [p2] '最大最小错误数
  7.     For i = 0 To 999
  8.         a = i \ 100
  9.         b = (i - a * 100) \ 10
  10.         c = i Mod 10
  11.         cw = 3 + (InStr(bw, a) > 0) + (InStr(sw, b) > 0) + (InStr(gw, c) > 0)   '错误数
  12.         If cw >= cmin And cw <= cmax Then
  13.             n = n + 1
  14.             arr(n, 1) = a: arr(n, 2) = b: arr(n, 3) = c
  15.         End If
  16.     Next
  17.     [a11:c1100] = ""
  18.     If n > 0 Then [a11].Resize(n, 3) = arr
  19.     MsgBox "共有" & n & "组"
  20. End Sub
复制代码
发表于 2017-1-10 12:43 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-10 13:55 | 显示全部楼层
today0427 发表于 2017-1-10 12:43
不会做,下一题!

原来这个有点问题,再化简了一下,请再看一次

today

点评

我再仔细一看,还是不会!  发表于 2017-1-10 14:44
回复 支持 反对

使用道具 举报

发表于 2017-1-10 20:16 | 显示全部楼层    本楼为最佳答案   
  1. Sub 容错输出()
  2.     bw = Join(Application.Transpose(Application.Transpose([b1:k1])), "")   '百位
  3.     sw = Join(Application.Transpose(Application.Transpose([b2:k2])), "")   '百位
  4.     gw = Join(Application.Transpose(Application.Transpose([b3:k3])), "")   '个位
  5.     Dim arr(1 To 1000, 1 To 3)
  6.     cmin = [n2]: cmax = [p2] '最大最小错误数
  7.     For i = 0 To 999
  8.         a = i \ 100
  9.         b = (i - a * 100) \ 10
  10.         c = i Mod 10
  11.         cw = 3 + (InStr(bw, a) > 0) + (InStr(sw, b) > 0) + (InStr(gw, c) > 0)   '错误数
  12.         If cw >= cmin And cw <= cmax Then
  13.             n = n + 1
  14.             arr(n, 1) = a: arr(n, 2) = b: arr(n, 3) = c
  15.         End If
  16.     Next
  17.     [a11:c1100] = ""
  18.     If n > 0 Then [a11].Resize(n, 3) = arr
  19.     MsgBox "共有" & n & "组"
  20. End Sub
复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 3经验 +15 收起 理由
一沫昔阳虹w + 3 来学习
today0427 + 9 哈哈,那还用说!
laoau138 + 3 来学习

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-10 21:41 | 显示全部楼层

grf1973大侠是高手
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-10 22:30 | 显示全部楼层

VBA蓝底单元格输入数字全排列   改定两位容错



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1经验 +3 收起 理由
一沫昔阳虹w + 3 来学习

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2017-1-11 11:16 | 显示全部楼层
代码不用变,N2 P2按要求改变就行。0-3都可以的。

评分

参与人数 1经验 +3 收起 理由
laoau138 + 3 来学习

查看全部评分

回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-11 16:21 | 显示全部楼层
grf1973 发表于 2017-1-11 11:16
代码不用变,N2 P2按要求改变就行。0-3都可以的。

谢谢高手了,你说的对,
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-11 16:47 | 显示全部楼层
grf1973 发表于 2017-1-11 11:16
代码不用变,N2 P2按要求改变就行。0-3都可以的。

用VBA计算  每一行3个数字是否相同


http://www.excelpx.com/thread-427101-1-1.html


回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-1-12 12:35 | 显示全部楼层
本帖最后由 laoau138 于 2017-1-12 17:32 编辑
today0427 发表于 2017-1-10 12:43
不会做,下一题!

VBA不用A列辅助编号改写逆顺   行数小于60先逆行到1   再从60 59逆下去


http://www.excelpx.com/thread-427134-1-1.html


回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2017-6-26 13:21 , Processed in 0.093600 second(s), 32 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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