ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助]帮忙修改”VBA筛选非重复值方法比较“代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2008-8-19 13:39 | 显示全部楼层 |阅读模式

VBA筛选非重复值方法比较

作者:UNARTHUR
'网页:http://club.excelhome.net/viewthread.php?tid=104741&replyID=&skin=0

代码如下:

Sub 按钮1_单击() '这种方法最快
'Application.ScreenUpdating = False
t = Timer
Dim i&, j&, k&, p&, rng, rng1, ary()
Dim arr As Range
[g:g].ClearContents                      '清除所在页面G列的值,

'为什么g:g不能修改,如:g2:g,g3:g.....

p = [出入库登记!c60036].End(xlUp).Row     '定义数据区域的最后一行65536
Set arr = Range("出入库登记!c1:c" & p)

'为什么c1:c不能修改,如:c2:c,c3:c.....
ReDim ary(1 To p, 0)
rng = arr
arr.Sort Key1:=arr(1, 1), Order1:=xlAscending, Header:=xlNo
rng1 = arr
arr = rng
ary(1, 0) = rng1(1, 1)
For i = 2 To p
   If rng1(i, 1) <> rng1(i - 1, 1) Then
      ary(k + 2, 0) = rng1(i, 1)
      k = k + 1
   End If
Next i
Range("总结!g1:g" & p) = ary              '不重复值放置的区域

'为什么g1不能修改,如:g2,g3.....


t1 = Timer - t
MsgBox "用时:" & t1 & "秒"
Application.ScreenUpdating = True
End Sub

因表格有表头,所以想修改以上两处g:g和g1:g

为什么每次运行完程序后,自动计算设置变成了手动计算?

请高手们指教!

[此贴子已经被作者于2008-8-20 12:36:03编辑过]

TA的精华主题

TA的得分主题

发表于 2008-8-19 13:54 | 显示全部楼层

1、[g2:g6] 都带上行数

2、g2:g" & p+1)或者g3:g" & p+2) 区域应与arr匹配

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-8-19 14:26 | 显示全部楼层

可以了,谢谢,

1、[g2:g6] 都带上行数--G列的最后一行是GX,可不可以改为[g2:gX]

为什么没人回答第2、4个问题?

急急

[此贴子已经被作者于2008-8-20 12:56:25编辑过]

TA的精华主题

TA的得分主题

发表于 2008-8-20 13:18 | 显示全部楼层

1,把'Application.ScreenUpdating = False
前面的'删除;

2,可以改为Range("g2:g"& x),但是有关的都要改

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-8-20 13:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

原代码

vM6cWPo3.rar (97.22 KB, 下载次数: 17)


第4问已解决了!

' Application.Calculation = xlCalculationManual       '手动重算

将上句前加',增加下句

Application.Calculation = xlCalculationAutomatic    '自动重算

 请高手把第2个问题也解决一下!!!

[此贴子已经被作者于2008-8-20 14:45:35编辑过]
toC0WeDp.jpg
Huz8b68F.jpg

TA的精华主题

TA的得分主题

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

Sub 库存物品统计按钮() '这种方法最快
Application.ScreenUpdating = False
t = Timer
Dim i&, j&, k&, p&, rng, rng1, ary()
Dim arr As Range
p = [出入库登记!c65536].End(xlUp).row     '定义数据区域的最后一行行号65536
Set arr = Range("出入库登记!c4:c" & p)    '取不重复值表开始的位置,列号可以改,行号还不行
ReDim ary(1 To p, 0)
rng = arr
arr.Sort Key1:=arr(1, 1), Order1:=xlAscending, Header:=xlNo
rng1 = arr
arr = rng
ary(1, 0) = rng1(1, 1)
For i = 2 To p - 3
   If rng1(i, 1) <> rng1(i - 1, 1) Then
      ary(k + 2, 0) = rng1(i, 1)
      k = k + 1
   End If
Next i
Range("库存!a4:a" & p + 3) = ary  

再下面的代码不对了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-8-21 12:17 | 显示全部楼层

感谢shizx98老师

运行后显示错误,如图:


[求助]帮忙修改”VBA筛选非重复值方法比较“代码

[求助]帮忙修改”VBA筛选非重复值方法比较“代码

TA的精华主题

TA的得分主题

发表于 2008-8-21 14:27 | 显示全部楼层

改这一句试试:

Set arr = Sheets("出入库登记").Range("c4:c" & p)   '取不重复值表开始的位置,列号可以改,行号还不行

TA的精华主题

TA的得分主题

 楼主| 发表于 2008-8-21 20:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

山老师,还是不行!

 


[求助]帮忙修改”VBA筛选非重复值方法比较“代码

[求助]帮忙修改”VBA筛选非重复值方法比较“代码

TA的精华主题

TA的得分主题

发表于 2008-8-21 23:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

我在测试中未发现错误。

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

本版积分规则

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

GMT+8, 2024-11-23 12:44 , Processed in 0.048067 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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