Visual_Basic 板


LINE

为了跑公司资料分析自己透过vba简单写了一段整理raw data格式 目前已可正常执行省下大量人工处理的时间 但其中有一段做逐行判断会跑特别久 即便是在最新的i7四核笔电上跑,有时还是会跑到无回应... 因此想请教是否有较有效率的写法 经过分段测试,跑最久的是这段 资料量约近万笔(列)、每笔约100+栏位(栏) --------------------------------------------------------- Sub Clear_Row() ' ' Delete blank row ' Dim LastRow As Integer, r As Integer Sheets("raw_data").Select Range("A1").Select Selection.End(xlDown).Select LastRow = ActiveCell.Row Application.ScreenUpdating = False For r = LastRow To 2 Step -1 If Application.WorksheetFunction.Sum(Range(Cells(r, 4),_ Cells(r,100))) = 0 Or Cells(r, 2) = "WW" Then Rows(r).Delete End If Next r Application.ScreenUpdating = True End Sub --------------------------------------------------------- 基本上做的事情就是 1.找到整串资料的最後一笔 2.由下而上判断该笔资料是否第二拦是WW 或 第4~100栏位是0 3.若是则删除该笔资料、否则跳过 --------------------------------------------------------- 另外那行If中 其实第一个条件是想判断第4~100栏是否全为0,但我不知道怎麽写... 因raw data暂时不会出现负数相抵就先用sum的方式偷吃步 但还是想问问正确的做法,以免未来要处理负数的情况 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.240.178.251
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Visual_Basic/M.1438017887.A.EA4.html
1F:→ MOONRAKER: 没什麽好办法,你顶多可以改用loop...until 07/28 02:49
2F:→ MOONRAKER: 抱歉上面跳过,那没什麽用 07/28 02:52
3F:→ MOONRAKER: 顶多把cells(r,2)="WW"放前面 或乾脆分开写 看会不会比 07/28 02:53
4F:→ MOONRAKER: 较快 你要检查4-100行是不是都0 唯一的办法就是全都看 07/28 02:54
5F:→ MOONRAKER: 过一次 一万列就是97万格 不可能多快 07/28 02:54
6F:→ MOONRAKER: 又者我很怀疑叫用工作表函数的效率 你可以多用一个for 07/28 02:56
7F:→ MOONRAKER: 来检查是不是都0 看是快还是慢 07/28 02:56
8F:→ hulapig: 可以加abs()函数,让所有4至100栏的数字必为正值 07/28 06:01
9F:推 knstt: 你需要的是加Application.Calculation=xlCalculationManual 07/28 13:10
10F:→ knstt: 应该可大符提升速度 07/28 13:10
原来我弄错了?!
11F:推 ClubT: 你可以先把要删除的列数记下来,最後再一次删除应该会快点 07/28 15:56
12F:→ ClubT: Sheet1.Range("2:3,5:5").Delete shift:=xlUp 07/28 16:00
13F:→ ClubT: 另外可以用CountIF的函数 07/28 16:08
14F:→ ClubT: 我认为慢的部分应该是删除的部分而不是判断式的部分 07/28 16:08
交叉测试了一下"删除"这动作本身应该是最久的... ※ 编辑: sarcasm (114.34.85.249), 07/29/2015 14:20:40
15F:→ biglongtoday: 用specialcells 07/30 09:18
16F:→ hulapig: 如果不删,将该列复制到另一个工作表,最後删除原始工作表 07/30 11:30
17F:→ hulapig: 不知道会不会比较快 07/30 11:36
18F:推 Yaiba: 先移动到最下面再一次删除应该可以省时间?! 07/30 16:53
19F:推 olycats: 多加入一栏,下公式判断是否要删除,最後针对该栏筛选 08/08 13:14
20F:→ olycats: 筛选出来後一次删除 这样或许会比较快 08/08 13:15
21F:→ olycats: 判断全为零 min=0 and max=0 如果资料都是数值的话 08/08 13:16







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP