ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求大神改一个vba代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-10-2 16:26 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我手里有一个数据处理的表格工具,但是这个表格只能处理65536行的数据现在高版本的excel好像已经最多支持处理100多万行的数据的,不知道有大神能不能帮我看一下能不能突破只能65536行数据的限制,我自己进代码里面把65536全部改成1000000,结果提示错误了。麻烦有经验的大神帮我看看,先谢谢啦!
数据处理.rar (66.45 KB, 下载次数: 3)

TA的精华主题

TA的得分主题

发表于 2018-10-2 16:29 | 显示全部楼层
代码 贴出来》》》》》》》》》》》》》》》》》》》》》》》》》手机没法看》》》》》》

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 16:44 | 显示全部楼层
本帖最后由 wanwfy 于 2018-10-2 16:45 编辑
  1. Sub XXX_模糊分组()
  2. Dim t As Single                              ' 统计代码运行时间
  3. t = Timer
  4. Application.ScreenUpdating = False '关闭屏幕刷新提高运行速度

  5. Dim max, b, c, d, h, i, j, k As Integer
  6. Dim keywords As String
  7. Dim arr1(), arr2()

  8. Range("A3:A65536").Font.ColorIndex = 0         '以A3为起点,从左至右,从上至下,区域内的单元格字体颜色为黑色
  9. Range("B3:IV65536").ClearContents              '清空,从以B3为起点,从左至右,从上至下,区域内的单元格内容
  10. max = [A65536].End(3).Row                      '获取A列从第3行开始统计总共有数据的行数,也就是关键词的总个数
  11. b = [iv2].End(xlToLeft).Column                 '获取第二行,词根行的总个数
  12. c = 0                                          '获取分组的关键词总个数,初始化为0


  13. arr1 = Range("A3:A" & max)    '取待分关键词
  14. arr2 = Range("2:2")           '取词根

  15. Range("A1") = "工具使用说明,加Q:34569268 SEM联盟-赵阳"

  16. For i = 3 To b  '词根开始
  17.     h = 0
  18.     k = 3

  19.     For jj = 1 To UBound(arr1) '取关键词开始
  20.    
  21.     If Cells(jj + 2, 1).Font.ColorIndex <> 15 Then '未分组的词,无颜色,即进行分组
  22.     arr = Split(arr2(1, i), "&")
  23.     x = Int(UBound(arr) + 1)
  24.        If x > 4 Then
  25.               MsgBox "对不起,为减少计算占用内存程序暂时只支持最多4个词根的完全存在的组合,请检查词根是否有大于3个“&”", 48, "问题提示"
  26.        End If
  27.    
  28.         If x = 1 Then
  29.       
  30.            If arr1(jj, 1) Like "*" & arr2(1, i) & "*" Then
  31.                Cells(k, i) = arr1(jj, 1)
  32.                Range("A" & jj + 2).Font.ColorIndex = 15
  33.                k = k + 1
  34.                c = c + 1
  35.            End If
  36.            
  37.         ElseIf x > 1 Then

  38.           Select Case x
  39.          
  40.           Case 2
  41.             If arr1(jj, 1) Like "*" & arr(0) & "*" Or arr1(jj, 1) Like "*" & arr(1) & "*" Then
  42.                Cells(k, i) = arr1(jj, 1)
  43.                Range("A" & jj + 2).Font.ColorIndex = 15
  44.                k = k + 1
  45.                c = c + 1
  46.             End If
  47.          
  48.           Case 3
  49.             If arr1(jj, 1) Like "*" & arr(0) & "*" Or arr1(jj, 1) Like "*" & arr(1) & "*" Or arr1(jj, 1) Like "*" & arr(2) & "*" Then
  50.                Cells(k, i) = arr1(jj, 1)
  51.                Range("A" & jj + 2).Font.ColorIndex = 15
  52.                k = k + 1
  53.                c = c + 1
  54.             End If
  55.          
  56.         Case 4
  57.             If arr1(jj, 1) Like "*" & arr(0) & "*" Or arr1(jj, 1) Like "*" & arr(1) & "*" Or arr1(jj, 1) Like "*" & arr(2) & "*" Or arr1(jj, 1) Like "*" & arr(3) & "*" Then
  58.                Cells(k, i) = arr1(jj, 1)
  59.                Range("A" & jj + 2).Font.ColorIndex = 15
  60.                k = k + 1
  61.                c = c + 1
  62.             End If
  63.             
  64.       End Select

  65.     End If
  66.     End If
  67.     Next
  68.       
  69.    
  70.     If k = 3 Then
  71.      l = "暂无"
  72.      Cells(h + 3, i) = l
  73.      Cells(h + 3, i).Font.ColorIndex = 5
  74.     End If

  75. Next

  76. '统计分组个数
  77. s = "总分关键词" & max - 2 & "个" & vbCrLf & "已成功分组" & c & "个" & vbCrLf & "未完成分组" & max - c - 2 & "个"
  78. Range("C" & 1) = s
  79. Range("C" & 1).Font.Size = 9



  80. Application.ScreenUpdating = True '打开屏幕刷新提高运行速度
  81. Range("D1") = "分词耗时:" & Format$(Timer - t, "Fixed") & "s"
  82. Range("E1") = "注:以下词根按照优先级重要程度从左至右,“词根”可根据自身需要自由设置,一列对应一个。另外实现了多个词组合分组(组合格式:北京+快捷+如家),最多四个词"
  83. Call 未分组_keyword  '显示未分组
  84. Range("B3:IV65536").Font.Size = 9

  85. End Sub

  86. Sub XXX()
  87. Dim a, b, c, h, i, j, k As Integer
  88. Range("A3:A65536").Font.ColorIndex = 0         '以A3为起点,从左至右,从上至下,区域内的单元格字体颜色为黑色
  89. Range("B3:IV65536").ClearContents              '清空,从以B3为起点,从左至右,从上至下,区域内的单元格内容
  90. a = [A65536].End(3).Row                        '获取A列从第3行开始统计总共有数据的行数,也就是关键词的总个数
  91. b = [iv2].End(xlToLeft).Column                 '获取第二行,词根行的总个数
  92. c = 0                                          '获取分组的关键词总个数
  93. For i = 3 To b
  94.     h = 0
  95.     k = 3
  96.     For j = 3 To a
  97.         If Cells(j, 1) Like "*" & Cells(2, i) & "*" And Cells(j, 1).Font.ColorIndex <> 15 Then
  98.            Cells(k, i) = Cells(j, 1)
  99.            Range("A" & j).Font.ColorIndex = 15
  100.            k = k + 1
  101.            c = c + 1
  102.         End If
  103.     Next j
  104.     If k = 2 Then
  105.      l = "暂无"
  106.      Cells(h + 2, i) = l
  107.      Cells(h + 2, i).Font.ColorIndex = 5
  108.   '  Else
  109.   '    h = k - 1
  110.   '    l = "共有" & (k - 2) & "个关键词"
  111.   '    Cells(h + 2, i) = l
  112.   '    Cells(h + 2, i).Font.ColorIndex = 3
  113.     End If
  114. Next i

  115. '统计分组个数
  116. s = "总分关键词" & a - 2 & "个" & vbCrLf & "已成功分组" & c & "个" & vbCrLf & "未完成分组" & a - c - 2 & "个"
  117. Range("C" & 1) = s
  118. Range("C" & 1).Font.Size = 9
  119. Call BB
  120. End Sub

  121. Sub 未分组_keyword() '作用是获取未分组的关键词,并显示到第二列
  122. Application.ScreenUpdating = False '关闭屏幕刷新提高运行速度

  123. Dim a, i, k As Integer
  124. a = [A65536].End(3).Row
  125. k = 3
  126. For i = 3 To a
  127.     If Range("A" & i).Font.ColorIndex <> 15 Then
  128.        Range("B" & k) = Range("A" & i)
  129.        k = k + 1
  130.     End If
  131. Next i

  132. Application.ScreenUpdating = True '打开屏幕刷新提高运行速度
  133. End Sub

  134. Sub clear()  '清空内容并还原颜色
  135. a = [A65536].End(3).Row
  136. Range("B3:IV65536").ClearContents
  137. Range("A3:IV65536").Font.ColorIndex = 1
  138. s = "总分关键词" & a - 2 & "个" & vbCrLf & "已成功分组0个" & vbCrLf & "未完成分组" & a - 2 & "个"
  139. Range("C" & 1) = s
  140. Range("C" & 1).Font.Size = 9
  141. End Sub

  142. Sub clear_one()  '清空首列内容并还原颜色
  143. Application.ScreenUpdating = False '关闭屏幕刷新提高运行速度

  144. If MsgBox("你确定要清除【首列总分的所有关键词】?" & vbCrLf & "说明:清除后,关键词完全删除且该操作不可撤销还原,请做好数据备份,慎用!", vbYesNo, "Joy 对清除功能 友情提示!") = vbYes Then
  145.     Range("A3:A65536").ClearContents
  146.     Range("A3:IV65536").Font.ColorIndex = 1
  147.     s = "首列总分关键词" & vbCrLf & "已清空!"
  148.     Range("C" & 1) = s
  149.     Range("C" & 1).Font.Size = 12
  150. End If

  151. Application.ScreenUpdating = True '打开屏幕刷新提高运行速度
  152. End Sub
复制代码

代码太多了,粘贴不了哦,这个是其中一段

TA的精华主题

TA的得分主题

发表于 2018-10-2 16:52 | 显示全部楼层
另存为.xlsm格式即可

关键词分组.zip

1.43 MB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 17:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 17:12 | 显示全部楼层
Yalishanda30 发表于 2018-10-2 16:52
另存为.xlsm格式即可

刚刚测试了一下,好像不行哦,处理数据的时候没有反应

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 17:14 | 显示全部楼层
wanwfy 发表于 2018-10-2 17:12
刚刚测试了一下,好像不行哦,处理数据的时候没有反应

我处理30多万数据的时候完全没有反应,如果只留下65536行的话就可以正常处理,能不能加个qq帮我看看呢

TA的精华主题

TA的得分主题

发表于 2018-10-2 18:42 | 显示全部楼层
wanwfy 发表于 2018-10-2 17:14
我处理30多万数据的时候完全没有反应,如果只留下65536行的话就可以正常处理,能不能加个qq帮我看看呢

这样可以了吗?

关键词分组.rar

1.17 MB, 下载次数: 10

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 19:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-10-2 19:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

运行以后还是会出现这个错误。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-16 10:50 , Processed in 0.031457 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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