Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3077|回复: 7

[资料] 学了就能用的上哎---晒晒我做的宏,多谢各位老师,给自己打打气

[复制链接]
发表于 2007-11-29 18:50 | 显示全部楼层 |阅读模式
<p>其实我的做法就是把想做的工作录制宏,然后分析,修改,不断的试错,跑通了就行。很菜,但是就我的水平就很管用了。</p><p>Sub 分析()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Sheets("收款机分析2").Copy<br/>这一个是吧一张表复制出来。没什么,下了第一节课就做好了,原来要点击右键,选复制工作表---新工作表,现在就一下。</p><p>&nbsp;&nbsp;&nbsp; <br/>End Sub<br/>Sub 改代码()<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表(增加)").Unprotect<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表(扣减)").Unprotect<br/>&nbsp;&nbsp;&nbsp; Sheets(Array("收款机单品调整表(扣减)", "收款机单品调整表(增加)", "收款机单品调整表", "收款机分析2")).Select<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表").Activate<br/>&nbsp;&nbsp;&nbsp; Columns("D:D").Select<br/>End Sub<br/>这是要同时修改4张结构相同的工作表,原来要先分别解除两个表的保护,再按CRTL键选择4张表组成组,再修改。现在就按一下按钮。</p><p><br/>Sub 改完恢复()<br/>&nbsp;&nbsp;&nbsp;&nbsp; Range("A1").Select<br/>&nbsp;&nbsp;&nbsp; Sheets("每日新菜").Activate<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表(扣减)").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表(增加)").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True<br/>&nbsp;&nbsp;&nbsp; Sheets("收款机单品调整表").Activate<br/>&nbsp;&nbsp;&nbsp; Range("A1").Select<br/>&nbsp;&nbsp; End Sub<br/>这是修改完后,恢复保护,解除工作组。原来要按4下,现在就一下按钮。</p><p>Sub 粘贴数据()<br/>&nbsp; <br/>&nbsp;&nbsp;&nbsp; ActiveCell.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :=False, Transpose:=False<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("A1:A1594").Replace What:="0", Replacement:="", LookAt:=xlWhole, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReplaceFormat:=False<br/>&nbsp;&nbsp; End Sub<br/>这是要吧外部的数据拷贝到某一列里,再吧0值去掉,原来要用3步,按4下,现在就就按一下按钮。</p><p>&nbsp;&nbsp; Sub 固定单价复制酒水()<br/>&nbsp;&nbsp; ActiveCell.Select<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("B1:B1645").Copy<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("B1:B1645").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :=False, Transpose:=False<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("A1:A1645").Copy<br/>End Sub<br/>这是要把上一个复制的数据右面的一列全部固定为数值,那一列默认指向一个固定列,全是引用,原来总是忘掉,结果金额总是不平。现在就按一下,全部搞定,而且自动复制数据,可以拷到别的表中去。<br/>&nbsp; 这个可以修改成每天到固定列取数,没来得及。</p><p><br/>&nbsp;&nbsp;&nbsp; Sub 复制烧烤()<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("D1:E100").Copy<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Range("D1:E100").Select<br/>End Sub<br/>&nbsp;<br/>这是取数准备复制到别的表,原来光选定就要半天。<br/></p>
[此贴子已经被作者于2007-11-29 18:53:45编辑过]
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2007-11-29 19:00 | 显示全部楼层

<p>还可以再去掉代码中的一些Select</p>
回复

使用道具 举报

 楼主| 发表于 2007-11-29 19:22 | 显示全部楼层

<p>谢谢班长,用Select主要是怕自己不知道复制了没有,算给个反馈吧,因为还不知道别的办法,只能先这样用着。恐怕再学几节课,我的那个两个公式搞定的系统就可以重写了,9兆的文件可以简化到几百K呢。</p><p>这几个简单的应用对我的这个小核算系统是极大的提升啊,原来我给新员工培训要从EXCEL基本操作开始讲起,选择性粘贴啊,快捷键啊,一堆,讲完了就把人给搞晕了。的确有人听完就不干了,嫌忒麻烦。而且还要在以后盯着看,要好几天才能记得住,形成工作流程。这样简单的EXCEL操作居然成了专业技术,门槛倒是提高不小。</p><p>我做完这几个按钮其他人坚决不让安,知道原因吗??-----“你这是打算让我们下岗啊”。</p><p></p><p></p>
回复

使用道具 举报

 楼主| 发表于 2007-11-29 19:35 | 显示全部楼层

<p>差别太大了,</p><p><br/>Sub 计算003()<br/>&nbsp;&nbsp;&nbsp; Dim T As String<br/>&nbsp;&nbsp;&nbsp; Dim i As Integer<br/>&nbsp;&nbsp;&nbsp; For i = 2 To 300<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T = ActiveCell.Offset(i).Address(0, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Range(T).Formula = "=SUMIF(收款机!C4:C1648,B3:B308,收款机!E4:E1648)"<br/>&nbsp;&nbsp;&nbsp; Next i<br/>&nbsp;&nbsp;&nbsp; ActiveCell.Resize(301).Select<br/>&nbsp;&nbsp;&nbsp; Selection.Copy<br/>&nbsp;&nbsp;&nbsp; Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :=False, Transpose:=False<br/>&nbsp;&nbsp;&nbsp; Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReplaceFormat:=False<br/>&nbsp;&nbsp;&nbsp; End Sub</p><p><br/>Sub 计算end()<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActiveCell.Range("A1:A300").Select<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Selection.Formula = "=SUMIF(收款机!C4:C1648,B3:B308,收款机!E4:E1648)"<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Selection.Copy<br/>&nbsp;&nbsp;&nbsp; Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :=False, Transpose:=False<br/>&nbsp;&nbsp;&nbsp; Selection.Replace What:="0", Replacement:="", LookAt:=xlWhole, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ReplaceFormat:=False<br/>&nbsp;&nbsp;&nbsp; End Sub</p><p></p><p>这两个宏的目的一样啊,怎么第一个要算半天,好几秒呢,第二个基本没延迟。古怪啊,不懂</p><p></p>
回复

使用道具 举报

发表于 2007-11-29 19:58 | 显示全部楼层

<p>我通过上课,才试着做会了工资条,像楼主学习!</p><p>[em04]</p>
回复

使用道具 举报

发表于 2007-11-29 19:59 | 显示全部楼层

楼主是哪个组的呀?
回复

使用道具 举报

 楼主| 发表于 2007-11-29 20:01 | 显示全部楼层

<p>我三组啊</p>
回复

使用道具 举报

发表于 2007-11-29 20:06 | 显示全部楼层

<p>楼主传上附件看看</p><p>For i = 2 To 300<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; T = ActiveCell.Offset(i).Address(0, 0)<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Range(T).Formula = "=SUMIF(收款机!C4:C1648,B3:B308,收款机!E4:E1648)"<br/>&nbsp;&nbsp;&nbsp; Next i<br/>要是当中的两句中哪个能放到循环之外 就会快的</p><p>或者用数组方式</p>
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-6-2 04:10 , Processed in 0.424479 second(s), 3 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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