ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求解VBA

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-11-27 02:12 | 显示全部楼层 |阅读模式
本帖最后由 LED147258 于 2022-11-27 21:26 编辑

请教一下:

想将4列文本型数字,即03这样的数字,按条件并成一个文本数字,即10305172235.
自己和朋友帮忙写的代码都只能回填到28484行,远远不够全部结果。
之前自己尝试成功过,不知为何不行了,是结果太多一列装不下吗?
我总感觉是代码有错误,只得到一个循环的结果,2、3循环用的函数应该不对。
请给修改一下,自己会从中找到原因。
谢谢!!!


比如4列图中,1列的0103的后两位03和2列的0305前两位的03相同,合并成010305
                      3列的0513的前两位05和上面的010305的后两位05相同,合并成01030513
                      4列的1314的前两位13和上面的01030513的后两位13相同,并成0103051314
bc6303b1f4667ab5f2d9c08ac0daabc.png

问题总在28484即28482总行出错

问题总在28484即28482总行出错

Desktop.rar

1.29 KB, 下载次数: 10

分析.rar

315.19 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2022-11-27 09:25 | 显示全部楼层
没有excel数据文件?

TA的精华主题

TA的得分主题

发表于 2022-11-27 09:37 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-27 21:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
蓝桥玄霜 发表于 2022-11-27 09:25
没有excel数据文件?

帮个忙,整好几天了。累了。
附件已经上传。
我用一个一个单元格赋值好用,但是老慢了。
或许我写的数组也对,可能组合的结果太大,无相应。
请帮个忙。
谢谢
哪怕给点建议。

TA的精华主题

TA的得分主题

发表于 2022-11-27 22:28 | 显示全部楼层
本帖最后由 罗达 于 2022-11-28 11:06 编辑

uTools_1669604768922.png 初看一下,实际不要想的这么复杂,规则是4列数据,一次取两位(作为一个整体对待),相邻重复则去掉。但不知这个过程要重复几次?只去一次重,还是无限次去重,请楼主明确。解法不难

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-27 23:59 | 显示全部楼层
罗达 发表于 2022-11-27 22:28
初看一下,实际不要想的这么复杂,规则是4列数据,一次取两位(作为一个整体对待),相邻重复则去掉。但不 ...

就是彩票号码组合。
0103,0305,0507,0714,12的03相同组成010305,23的05相同,组成01030507,34的07相同组成0103050714完成。
0103,0305,0709,0918,12的03相同组成010305,23的05和07不同,不能组合,以至放弃0918.
最终数组中只保留5个号码组合成功的文本型数字,如01、03、07、22、34结果是0103072234.
就这样回填到一列。
近期发现只能回填表格到28000左右行,下面都是#N/A。改来改去给自己搞疯了!

TA的精华主题

TA的得分主题

发表于 2022-11-28 02:13 | 显示全部楼层
LED147258 发表于 2022-11-27 23:59
就是彩票号码组合。
0103,0305,0507,0714,12的03相同组成010305,23的05相同,组成01030507,34的07 ...

这代码搞的好复杂:
image.png

image.png
image.png


评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2022-11-28 02:42 | 显示全部楼层
简简单单一个数组,给你整成四个数组,稿这么复杂
image.png
image.png
image.png
由于结果太多(application.transpose有数量限制上限65536),字典不能一次输出,需要分次输出,所以速度反而没有快。
image.png
image.png



TA的精华主题

TA的得分主题

 楼主| 发表于 2022-11-28 10:53 | 显示全部楼层
zxsea_7426 发表于 2022-11-28 02:42
简简单单一个数组,给你整成四个数组,稿这么复杂

这FOR循环,我就存在一个死点,可能在两方面,1,不清晰循环的节奏,哪里开始哪里结束2,怎么读取数组。
慢慢加深吧。
哪里也赶不上论坛,人材多不说,针对问题又准确又高效。
谢谢!!!十分感谢!!!

TA的精华主题

TA的得分主题

发表于 2022-11-28 11:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
  1. Sub TEST2()
  2. '数字两位一组合并去掉邻位重复
  3. Dim arr, brr(), j, n, r, s, a, c, s1

  4. Application.ScreenUpdating = False
  5. With Worksheets("排列")
  6.     r = .Range("CN1000000").End(xlUp).Row
  7.     arr = .Range("CN1:CQ" & r)
  8.     ReDim brr(1 To r, 1 To 1)
  9.     For j = 3 To r
  10.         s = arr(j, 1) & arr(j, 2) & arr(j, 3) & arr(j, 4)
  11.         If Len(s) < 1 Then Exit For
  12.         s1 = Left(s, 2)
  13.         For n = 1 To Len(s) Step 2
  14.             On Error Resume Next
  15.             a = Right(s1, 2)
  16.             c = Mid(s, n + 2, 2)
  17.             s1 = Left(s1, Len(s1) - 2) & DELchong(a, c)
  18.         Next
  19.         brr(j, 1) = s1
  20.         s1 = "": a = "": c = ""
  21.     Next
  22.     .Range("CS1:CS" & r).Select
  23.     Selection.NumberFormatLocal = "@"
  24.     .Range("CS:CS").ClearContents
  25.     .Range("CS1").Resize(r, 1) = brr
  26. End With
  27. Application.ScreenUpdating = True

  28. End Sub


  29. Function DELchong(a, b)
  30. '2个数字比较,相同则去掉
  31. Dim i As String

  32. If a = b Then i = a            '2者相同
  33. If a <> b Then i = a & b       '2者不同

  34. DELchong = i

  35. End Function
复制代码

LED147258 发表于 2022-11-28 10:53
这FOR循环,我就存在一个死点,可能在两方面,1,不清晰循环的节奏,哪里开始哪里结束2,怎么读取数组。
...


我更新了回复,加上了我的代码,看起来更简单,不知是不是你想要的
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-20 18:41 , Processed in 0.046461 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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