ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 有2个不错的代码分享大家①提取 ②删除重复行,并求帮助

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-4-5 21:36 | 显示全部楼层 |阅读模式
有2个不错的代码分享大家:①提取其他Excel表格到sheet1中 ②删除重复行

我根据自己需求做了改进,但也碰到点问题:
问题1:需要用("A2:Q1000") 解决范围选取。提取后,空白行为0,删除重复行时,极费时间。哪位大神帮忙改进循环判断语句,自动判断提取有用数据。
问题2:提取的第2行,格式发生变化,不知什么原因。


问题3:删除重复行的代码,在数据多时,运行速度很慢,很费时间,哪位大神帮忙优化一下。

感谢大家,互相帮助

问题样本.rar

37.27 KB, 下载次数: 9

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-5 21:39 | 显示全部楼层
追加问题:因为提取的文件数据不同,所以不能用调整单元格数据范围,怕漏掉数据只能(With Sheet1.Range("A2:Q1000")

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-4-5 21:45 | 显示全部楼层
  1. Sub 提取()     '提取其他工作表数据
  2.     Dim Temp As String
  3.     Temp = "'" & ThisWorkbook.Path & "\[abc.xls]Sheet1'!"
  4.     With Sheet1.Range("A2:Q1000") '取abc.xls工作簿Sheet1工作表("A1:C1")单元格数据,A1--C1为范围(根据需要更改)
  5.         .FormulaR1C1 = "=" & Temp & "RC"
  6.         .Range("A2:R2") = .Value ' 数据放到本工作簿Sheet1("A2:C2") 中,A1--C1为范围(根据需要更改)
  7.     End With
  8. End Sub

  9. '问题:需要用“Q10000”解决范围选取。要改进循环判断语句,否则提取后为0,删除重复行时,很费时间
  10. '问题:提取的第2行,改变了格式
复制代码
  1. Sub 删除重复行()
  2.     Dim m%, k%
  3.     For m = Range("a65536").End(xlUp).Row To 2 Step -1
  4.         For k = m - 1 To 2 Step -1
  5.              If Cells(m, "b") = Cells(k, "b") And _
  6.                 Cells(m, "c") = Cells(k, "c") And _
  7.                 Cells(m, "d") = Cells(k, "d") And _
  8.                 Cells(m, "e") = Cells(k, "e") And _
  9.                 Cells(m, "f") = Cells(k, "f") And _
  10.                 Cells(m, "g") = Cells(k, "g") And _
  11.                 Cells(m, "h") = Cells(k, "h") And _
  12.                 Cells(m, "j") = Cells(k, "j") And _
  13.                 Cells(m, "k") = Cells(k, "k") And _
  14.                 Cells(m, "l") = Cells(k, "l") And _
  15.                 Cells(m, "m") = Cells(k, "m") And _
  16.                 Cells(m, "n") = Cells(k, "n") And _
  17.                 Cells(m, "o") = Cells(k, "o") Then
  18.                 Cells(m, "a").EntireRow.Delete Shift:=xlUp '上面语法表示--对比列(b列--o列)
  19.             End If
  20.         Next
  21.     Next
  22. End Sub

  23. '问题:数据多时,运行速度很慢,很费时间,求优化
复制代码


TA的精华主题

TA的得分主题

发表于 2018-4-5 21:47 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
.留下记号,谢谢

TA的精华主题

TA的得分主题

发表于 2018-4-5 22:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
既然是单元格整行删除  数据多了当然是慢了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-6-2 17:00 , Processed in 0.030018 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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