excel vba视频教程出现了问题

Excel 到底有多厉害?
139 个回答
作者:雨声敲敲blog:homepage:weibo:转载请注明Excel就像一把天山寒铁淬炼而成的杀猪刀,本身已经很厉害,但具体有多厉害取决于用它的人。Excel最牛逼的地方在于它不是小李飞刀也不是轩辕剑——需要练个10年8年才能用,它只是一把菜刀,Excel最牛逼的地方在于它不是小李飞刀也不是轩辕剑——需要练个10年8年才能用,它只是一把菜刀,老百姓可以用来切菜,高手可以用来刮胡子,绝世高手拿着直接从南天门一直砍刀蓬莱东路。////////////////////////////////////////////////要你命1000:数据管理////////////////////////////////////////////////表格是什么?表格就是数据容器,对于非IT人士来说,这辈子可能都不会用数据库,但是!Excel让每个人都可以管理数据库了!其提供的基本功能足以完成大部分数据管理统计工作。(进度条效果:(进度条效果:)打个比方,同事拿到全国资料开始挨个数每个省有多少个客户数了半个小时,而你只是点了两下鼠标就完成了工作。没错,在同事眼里你就是那个百年难得一见的练武奇才(以后就可以承担更多工作了,可喜可贺)!////////////////////////////////////////////////要你命2000:数据处理(函数)////////////////////////////////////////////////别人向你扔屎,你可以躲。客户扔给你屎,你只能接住!比如这种屎:这种乱七八糟表格是没有任何数据意义的,如果只有三坨,动手处理一下就好了,如果有100坨,怎么办?不要紧张,我们只需要处理一行,其余99行交给excel即可。。。这种乱七八糟表格是没有任何数据意义的,如果只有三坨,动手处理一下就好了,如果有100坨,怎么办?不要紧张,我们只需要处理一行,其余99行交给excel即可。。。首先,数据-分列:首先,数据-分列:然后,直接查找替换,将没用的天字去掉:然后,直接查找替换,将没用的天字去掉:最后这个毛比较难以处理,动用函数:先找出具体数字,如果里面有“毛”字,直接将结果乘以0.1,一个规范的表格就诞生了:最后这个毛比较难以处理,动用函数:先找出具体数字,如果里面有“毛”字,直接将结果乘以0.1,一个规范的表格就诞生了:(如无特殊需要,最后带汉字的D列可以用E列覆盖掉)(如无特殊需要,最后带汉字的D列可以用E列覆盖掉)======================================================================Excel也可以为自己所用,再来举一个例子:时间管理。与一般时间管理App不同,因为我们可以自己设计研发,做出最适合自己的版本!Go首先写两行拖动一下右下角的小圆点拖动一下右下角的小圆点同理增加横轴同理增加横轴填写数据,编写公式。这样计算当天任务量:填写数据,编写公式。这样计算当天任务量:=COUNTA(B2:P2)
这样计算完成量=SUM(B3:P3)
这样计算完成度=Q3/Q2
最后完成度那里设置单元格格式-数字-百分比。最后填写数据。最终效果图(点击看大图):只要三个函数,每天的工作生活一览无遗!只要三个函数,每天的工作生活一览无遗!P.s 还可以拓展一些功能,比如当天完成度到达xx就有奖励/惩罚之类总结:掌握了函数,只要是和数据相关的工作,就可以考虑用Excel来处理。////////////////////////////////////////////////要你命3000:控制一切////////////////////////////////////////////////著名篮球员赤木刚宪曾经说过,掌握代码就等于掌握了整个Excel,此言非虚。Excel自带编程功能,只有想不到,没有做不到!接下来就用解决吃饭问题做一个简单例子展示一下:对于有选择困难症的人,让上天来决定吃啥是最好了,我们先填一点数据,如图:然后选择开发工具-VisualBasic(为了做例子专门下了一个office365,我也是拼了= =),然后什么都不管,直接粘贴代码:然后选择开发工具-VisualBasic(为了做例子专门下了一个office365,我也是拼了= =),然后什么都不管,直接粘贴代码:Dim a As Integer '定义公共变量
Sub 随机()
Dim x As Integer
Dim y As Integer
Randomize '初始化
x = Rnd() * (3 - 1) + 1 '生成2至7的随机数,代表列数
y = Rnd() * (4 - 1) + 1 '生成2至6的随机数,代表行数
Range("a1:d3").Interior.ColorIndex = xlNone '去掉填充色
Cells(x, y).Interior.ColorIndex = 3 '填充为红色
If a = 300 Then Exit Sub
GoTo reselect
然后保存回到excel,选择开发工具-插入-表单-按钮,画一个按钮在excel上,命名为“吃啥好”在按钮上点右键,指定宏,选择我们刚才做的函数,然后点确定:在按钮上点右键,指定宏,选择我们刚才做的函数,然后点确定:至此,一个听天由命的菜单就出现了。。。点一下看看什么效果:至此,一个听天由命的菜单就出现了。。。点一下看看什么效果:========================================================贴一点别人的作品,看看Excel的强大之处:Excel制作的半即时战斗模拟(原文地址)Excel制作的超级玛丽(日本人很闲啊= =)总结:掌握了代码,理论上可以用它来做任何小型项目!================================要你命4000:一些奇奇怪怪的事情================================用来画像素画(只要把格子调到宽高一致即可),矢量画亦可用来做动画:用来做动画:推荐书籍:你早该这么玩Excel(数据管理、工作用)Excel 2013高级VBA编程宝典(装逼、开发用)另外光有技巧是不够的,表格美化也很重要。(做人也一样,牛逼不够,还得帅。。。)雨声的软件小科普系列:
(在中重点讲了如何利用爬虫来收集数据和做出炫酷的表格,这篇主要讲讲如果用程序来替代人工,一个顶俩:虽然不如AlphaGo,但也是机器替代人类的一个小侧面)(在专栏文章中,提供学习VBA的实战技巧。)许多高级程序员瞧不上VBA。因为程序员是有鄙视链的:汇编 &C &C++ &Python &Java及C#及PHP(这三者相互撕) &VB &HTML。在这长长的鄙视链中,甚至都没有VBA的位置。可是,Excel+VBA是图灵完备的(谢谢
的精辟总结),所以被程序员用来耍酷的各类性感语言能实现的大部分功能,Excel+VBA都能实现,而且往往是以更高效更快捷的方式,在这里不谈效率和优雅。而且考虑到大部分普通群众是没有编程环境的(各种依赖各种包,各种OS各种编译环境,还有IDE),然而使用VBA,只需要打开装机自带的Office,然后按下Alt+F11就自动进入编程和执行环境;甚至可以更简单的通过录制宏来解决写程序的问题,只需要在简单的代码基础上修修补补就可以执行。再考虑到VBA和Office各软件的完美整合,所以在便捷性方面,VBA是无可比拟的。最后,Office+VBA的分享性和移植性很强,任何测试通过的程序放到别的机器上也可轻易执行;而其他程序,哪怕是一段最简单的“Hello World”,也不一定。因此本文讨论各种通过Excel+VBA能实现的各种炫酷功能(也会拓展到Office+VBA),主要是为Professional Service以及各行各业不写程序但是又严重依赖于Office的职场人士服务的。曾经有一个朋友和我说,“Excel根本不需要编程,像我这样的Excel大牛靠函数和自定义函数能解决所有的问题。”对于这样的评论,我想起自己小学时的一段经历。因为不能理解虚数i(i^2 = -1)的价值,问我爸i有卵用?我爸说,“等你长大了,遇到更多的问题,就知道i的价值。”1、自动打印刚进职场的新人,只要爸爸不是李刚,基本都做过影帝影后(影=印,各种复印打印的体力劳动)。特别是咨询投行服务行业,在某次给客户的大汇报或者大忽悠会议之前,花数小时或者整晚来打印数个文件,并不是天方夜谭。而且这件事情是对着同样一堆不断修改的文件,会经常不断重复发生。我加入BCG的第一个项目,就是帮助某大型企业从上到下设计KPI体系并实施。从上到下涉及到几十个部门,大概有100多张的KPI表格需要完成,这些KPI表格分布在各个Excel文件里。我们4个咨询顾问的任务:设定好KPI的基本格式,然后每个顾问负责几个部门,在Excel里不断修改KPI表格,打印出来后去各个当事人及其领导那里讨论并修改每周把所有的Excel文件中的KPI表格归集在一起,按顺序分部门打印出来,并需要多份,找负责该项目的HR头儿汇报进度和情况这里面有个费时费力的环节,每周需要在多个Excel文件中找出目标Worksheet,然后选定合适的区域作为输出的表格,按照一定的格式和一定的顺序,打印出这100多张表格。之前我们全是凭借人力,每周由一个Analyst把所有最新的Excel文件收集在一起,然后挨个打开文件选中合适的Worksheet,选中区域设置好格式进行打印。每进行一次,几乎耗费一两个小时,还不能保证不出错。于是写下了我的第一个VBA程序,而且基本上是宏录制之后来改的,没有使用参考书及搜索引擎,全靠F1和自动提示,所以贴出来特别纪念一下。实现的功能就是将上述的人肉实现的功能全部自动化。按下一个妞,就慢慢等着打印机按顺序出结果吧。后来这个程序的升级版是:调度多台打印机,进一步提高效率,以及将打印机卡纸造成队列错误的概率降到极小的范围内。2、制作图表及GIF动画图表制作是每个Office一族的必备任务,制得一手好表格,绝对是升职加薪和偷懒放风的利器。在回答(),就利用Excel+VBA做出数张炫酷的信息地图,利用VBA为每个省的图形涂色。(涂色部分来自于网上的一段程序,制作GIF动画的是自己完成的)(涂色部分来自于网上的一段程序,制作GIF动画的是自己完成的)同时,为了进一步增强炫酷结果,还利用VBA将这些连续变化的图表做成了GIF动画,可惜知乎不支持GIF的显示。3、制作复杂的分析图表下图是研究各个车型之间的用户相互转换关系,因为要将一维的转化率向量,变成两维的矩阵,所以使用了如下的复杂公式。=IF(ISERROR(OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",COLUMN(A4)),$D$3:$D$600,FALSE),0)/OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",ROW(A4)),$D$3:$D$600,FALSE),0)),"",OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",COLUMN(A4)),$D$3:$D$600,FALSE),0)/OFFSET($C$2,MATCH(CONCATENATE(ROW(A4),"-",ROW(A4)),$D$3:$D$600,FALSE),0))
同时为了用颜色的深浅来表示转化率的大小关系而便于比较,使用了VBA对下面的矩阵进行着色。当然有人肯定会说可以使用条件化格式,但是使用VBA保持了最高灵活度和效率。4、根据格式化信息,生成标准的word文件这是帮朋友实现的一个项目,他们实验室是研究某类事故并对重大事故进行鉴定,最后发布word版的正式报告。之前的工作流程是在专业的软件中完成计算和仿真,最后按照正式报告八股文的行文,把各种关键信息填进去,最后写成word文件。写报告的过程枯燥而没有技术含量,但却要反复进行。通过下图的Word+VBA,完成主要的交互界面并连接计算软件。在通过简单的交互获取主要信息后,在后台完成计算并将主要信息填写入八股文的word模版,最终完成报告,同时将结构化的信息存入Access数据库。希望有机会和
等大律师合作,将Termsheet的书写及Termsheet到SPA及M&A等的法律文件书写工作彻底自动化。5、通过Excel管理分布的任务流,并将Excel表格输出到Powerpoint这是协助某国际大型汽车制造厂完成新品牌及其新款车型上市,面临车型即将断档的窘境,该新车型的上市非常关键,不能错失时间节点。然而,新车型上市涉及到无数分支:制造、产品、市场、渠道、营销、公关、财务等等,同时还要协调欧洲的两个总部以及中国的两个分部。这次咨询的核心任务就是项目管理,总控整个大项目的进度,并每周向中国区的CEO汇报进度并发掘出易出现问题的关键节点以调配资源。我们4个咨询顾问分配下去各自负责几个部门或者项目分支,和团队一起规划流程、画甘特图、确认里程碑及时间点、安排负责人等等。当每天回到办公室大家将进度汇总在一起的时候发现了挑战及难点,每条任务线并不是独立发展的,而是各条任务线交织在一起并互相影响。某些核心人员在多个任务线出现。比如:负责预算的财务人员,几乎要出现在各条线中负责相关预算的审批环节某些任务线的里程碑是其他任务线里程碑的必要条件而相互关联。比如:新车的下线时间影响发布会的时间,相关法规测试的通过又影响车辆的下线时间等等当任务线增多以及任务线之间的交叉越发频繁的时候,汇总的任务将会几何级数增加,这就是我们在项目过程中遇到的问题。于是我利用Excel+VBA完成了这个工作的自动化。主要实现的功能:自动将4个顾问手中分散的Excel文件汇集在一起形成一个大的总表,如下图各顾问手中的表格是按照部门维度来划分的,汇总后需要按照不同的维度来输出不同类型的表格,比如:按任务线输出表格、按责任人输出表格、所有延误任务的表格、所有需要资源重点投入任务的表格等等在此基础之上,还要将上面提到的各种维度下的所有表格(大概有200多张),按要求格式粘贴到PPT中,每周提交给中国区的总部进行汇报和评估。密密麻麻的表格如下图。于是,我又写了一个程序将Excel中的表格输出到Powerpoint中,将一个秘书每次需要数小时才能完成的工作,简化成了一键发布,并可以在Excel中完成对PPT的更新。这个项目的程序量不小,近似于写了一个迷你版的Microsoft Project来进行项目管理。最后,下图中密密麻麻的PPT每周需要更新一次,每次都是快100张的工作量,然而基本上都是靠Excel来自动完成更新的。因为PPT的模版每次变化不大,我将这些模版记录下来,每周更新的时候只要根据Excel中最新的数据更改PPT中的数据即可。6、根据结果倒推假设一般的Financial Model都是根据重重假设计算最终结果。而在为某顶级手机品牌服务的过程中,我们却遭遇了逆向的尴尬。本来是根据地面销售人员的一定服务水平,计算所需要的销售人员数量;结果在项目过程中,总部已经确定好了销售人数的Head Count,转而要求我们根据HC确定服务水平。然而,服务水平不是一个单变量,是由零售店的覆盖率、销售拜访频率、拜访中的服务深度等多重因素来决定的,同时还可以根据一线至无线城市来变化。于是只好再次祭出Excel+VBA法宝。先根据常规思路建立好Financial Model,得出HC的初步结果。然后写VBA程序,根据不同的情景、不同的优先级以及不同的权重来调节零售店的覆盖率、销售拜访频率、拜访中的服务深度等多因素,同时设定这几大因素的可接受范围,逐步逼近HC的预设值。如果没有程序,以前基本是靠人工手动调节来凑结果,而且因为各种情景的不同,还需要多次调节。而通过程序,基本是自动完成,还可智能得设置优先级及权重,无需人工参与。7、海量下载Bloomberg数据并完成分析通过Bloomberg的VBA API,海量下载数百只目标股票的tick data以及order book。并根据实现构建好的数学模型,在后台完成计算,将上述的实时数据转化成每只股票实时的trading cost,实时展现在交易员最常用的Excel界面中,方便交易员评估当下的交易成本以便于优化交易策略。8、结语计算了一下,我在BCG做了三年咨询顾问,大概写了几万行VBA程序(都是自己手工输入的,没有复制拷贝和系统自动生成),每个项目一千至几千行程序不等。最后将Excel用成了中控界面,类似EMACS,在Excel可以随意操控全公司的打印机、Word、Powerpoint等等,自动完成各种任务以及数据更新和抓取。因为Excel的数据更结构化,所以将其作为中控平台,比Word和Powerpoint更有优势。一些学习VBA的小技巧在这个回答里:。最后,这些程序中的一些公共模块,打包给了BCG Global IT,BCG给了我一个Sponsorship去Stanford GSB读书。程序的注释行里面有我几个好朋友、亲人及导师的名字,祝他们一生平安。最后的彩蛋,还可以用VBA来画油画,零基础成为用美术作品把妹撩汉的艺术青年()。_________________________________更多精彩文章请看:
每一个会计或即将成为会计的人儿都会惊叹于 Excel 的强大功能与神力。但这款名叫 Microsoft Excel 的神秘办公软件却并不是你想驾驭就能驾驭得了的。 是一名来自加拿大多伦多的会计师。Walkin 在 Excel 软件里制作出了一款完成的 RPG 游戏,而且,真的可以玩了啦...这款游戏名为“竞技台.Xlsm”(Arena)~文件可以在 Excel 和2013版上运行。不幸的是,鱿鱼由于这是微软的办公套件,所以在 mac 系统中无法打开。游戏内容包括:随机对手:超过2000个随机对手,每个都具有不同的 AI 能力。随机物件:39个不同物件可组成超过1000种不同组合和物品属性。四个不同结局,8个拥有不同战术的大 boss。4种预先设定的竞技台和更多衍生竞技台,每个关卡都不同。31个咒语,超多通关策略。15种特殊屌爆掉宝。36项成就。全都能在 Excel 中实现。据说这个游戏玩起来就像是一个 RPG 游戏被搬到了科学计算器上,蛋友们蛋疼的赶快下来玩玩吧,顺便打开好久没用的 Excel!下载链接:
说个故事。当年和我老婆谈恋爱,一开始一直不冷不热,直到有一天,我见她眉头不展,便询问何事。曰:工作好忙,来不及对数据。(她在某通讯公司做数据稽核类工作)仔细询问教会她使用几个函数与数据透视表以后,她的工作量降低了约三分之一。于是就有时间和心情与我愉快地约会了。再然后就成了孩子她妈了……所以,你说EXCEL厉害不厉害。======================另,我转行很多次,保险、中介代理、智能家居、政府。只有Excel的技能一直伴随着我,具有持续性和可发展性。我个人认为每一个有可能和数字打交道的学生都有必要去学习、进阶下Excel。======================为了增加本故事的真实性,只能上我女儿照片了
这个必须推荐Excel大师朱鹤年老师。。。详细请见朱鹤年老师的《新概念基础物理实验讲义》后的Excel附录。朱老师教导我们要用授权软件。。。所以Excel无法上传,大家需要瞻仰的只能购买这本书了。。。简单说一下就是,像处理器wafer一样的Excel表格(你缩小缩小看上去就像wafer一样,嗯还有总线RAM什么的,性能不足的电脑基本直接卡住了),完成各种正常同学用Matlab、MMA完成的计算。。。多个sheet,数据相互调用。。。佩服得五体投地。。。我室友花了好几天试图研究清楚这些Excel,研究得差不多了赶快用Matlab重新写了一个。。。我反正有生之年是看不懂了。。。====================既然有人要截图。。。嗯来了Level 1看上去真是太弱了。。。你一定觉得你也会看上去真是太弱了。。。你一定觉得你也会Level 2这个看上去复杂多了,好像还不是大师级这个看上去复杂多了,好像还不是大师级Level 3这个怎么样。。。这个怎么样。。。Level 4哈哈哈哈愚蠢的人类(10%,Office for Mac最小的缩放比例)哈哈哈哈愚蠢的人类(10%,Office for Mac最小的缩放比例)Level 5由于本人分组实验时候没有分到朱老师组下,没有Level 5的Excel,不过亲眼看到室友缩放Level 5的时候Excel苦苦载入的情况。。。================看到有人说VBA实现,朱老师的Excel主要就是做计算,不含有任何的脚本,全部靠复杂的函数表达式(包括IF函数)以及Excel的自动填充完成。这使得这些Excel兼容性很强,在Office for Mac上运行和修改毫无压力,考虑不周的VBA代码跑到Mac上多半会残废。这个回答不是黑老师,我们必须要理解当年计算机刚刚开始普及的时候,老一辈人并没有我们这么好的环境,他们并没那么容易接触到Matlab、MMA、各种编程语言,所以Excel的确是一种选择,虽然复杂程度很高,但是它的确work。我依然佩服老师把自己的的研究deploy到Excel上所花费的努力(哦大概对大师来说很简单)。
前面大家答了一大堆很fancy的应用,确实很厉害。不过,其实有一个事实可以终结这个问题:MS Excel(加上它的VBA, ),是图灵完备的()。所以,Excel究竟有多厉害?它跟任何一个图灵完备的语言都是图灵等价的,所以它们都一样厉害。你可以理解成,凡是其他图灵完备的语言(比如,C语言)能做的,Excel在理论上都能做。所以,能用Excel做出游戏来并不奇怪。甚至你用Excel实现一台虚拟机应该也是可以的。话又说回来,理论上能做,不代表实际上做起来很方便,否则也不会出现那么多种不同的语言了。我在身边经常看到的一个现象是,很多人Excel水平极高,他们不管做什么都用Excel. 比如我的一个大神同学,之前需要做一些矩阵运算,竟然是用Excel做的,让我大开眼界。但是事实上这些tasks明显有更加方便的完成方式,比如刚才说的矩阵运算,用Matlab明显方便得多。所以,没有必要过于神化Excel,它在有些环境下是非常优秀的工具,但是有些任务,虽然能够用它完成,但是它明显不是最快捷最优雅的解决方案。以上。
几百个工作薄、几千个工作表,要汇总?怎么办?复制、粘贴……?搞死人,而且易出错!多薄多表合并,一键帮你搞定!
——mergebooks.dll下载地址:
访问密码 a714多薄多表合并——excel 外接程序插件使
明一、功能:1、多薄合并:将当前文件夹或某一文件夹(可以选择是否包含其子文件夹下)的所有工作薄合并到一个自动新建的“合并表”工作薄中。名称相同的工作表合并,名称不相同的工作表移到该工作薄中。默认按工作表名称对应合并。按位置对应合并(如果对应位置缺少工作表,可插入空表占位)。可以选择“合并整个工作薄中的所有工作表(按名称或按位置)、按位置选择的工作表、按名称选择的工作表”,还可选择“保留重复行(默认)”、“去除重复行”。各版本均可兼容。默认按工作表名称合并当前文件夹(可以选择是否包含其子文件夹)下的所有工作薄;在启动excel后(未保存)的新工作薄中点击该按钮则打开“文件夹选择”对话框。多表合并:将当前工作薄中的工作表合并到一个自动生成且位于最后的“合并表”工作表中。可以选择“合并所有工作表、选择的工作表”,还可选择“保留重复行(默认)”、“去除重复行”。3、多薄汇总——求和(默认)、平均、计数、只计数数字:将某一文件夹或当前文件夹下(不包括其子文件夹)的所有工作薄中与当前工作表名称相同工作表的按照所选择的一个或多个单元格区域汇总到一个自动新建的工作薄中。按照所选择的单元格区域位置对应汇总,没有选择的单元格区域则保留当前工作表中原有内容不变。多薄交叉汇总(求和、平均、计数、只计数数值):将当前文件夹下(不包括其子文件夹)的所有工作薄中与当前工作表名称相同的工作表按照所选择的包括首行首列在内的全部单元格区域按照首行首列进行交叉匹配汇总,并将汇总结果放置到另一个已打开的工作薄或自动新建的工作薄中。每个工作薄中对应的名称相同的工作表的行列大小、字段位置不必完全相同,但首行首列的单元格区域位置必须对应,而且必须尽量选择某个工作表中可能出现的最大单元格区域。工作表名称相同,首行首列位置、行列内容交叉对应汇总。4、多表汇总——求和(默认)、平均、计数、只计数数字:将当前工作薄中所有工作表按照所选择的一个或多个单元格区域按照位置对应汇总(求和、平均、计数),并将汇总结果放置一个自动新建的“多表汇总”工作表中。多表交叉汇总(求和、平均、计数、只计数数值):将当前工作薄所有工作表按照所选择的包括首行首列在内的整个单元格区域按照首行首列内容进行交叉匹配汇总,并将汇总结果放置一个自动新建的“交叉汇总”工作表中。单元格区域按照首行首列位置和行列内容交叉对应汇总。多薄(多表)交叉匹配汇总:(要求)要汇总的所有工作表的名称相同,首行首列的个数或位置可以不相同,但所有工作表的首行首列位置(行号、列号)必须一样;而且要尽量选择某个要汇总的工作表中可能会出现的最大的单元格区域。5、拆分表格:⑴拆分工作薄:可以把一个工作薄中的多个工作表拆分成多个工作薄;反之,又可合回来(工作表与工作薄的名称互换)。可以把当前文件夹下的所有工作薄(默认)、或选择的多个工作薄中名称相同的工作表重新组合到一个新工作薄中。工作薄与工作表名称互换。⑵拆分工作表:将当前单元格以下各行中不同内容拆分到多个工作表中。(以当前单元格以下各行内容命名工作表)6、跨表查询:从当前文件夹(可以选择是否包含其子文件夹)下的所有工作薄(或选择的工作薄、或当前工作薄)的所有工作表(或当前已选择的工作表、或当前工作表)中查找所选择的表头(字段)内容,并将查找结果放到一个自动生成且位于当前工作薄最后的“查询”工作表中。如果没有选择字段,则默认为*(即:忽略字段名,把各个工作表数据合并到“查询”工作表中)。既可查询行列不固定的表格,也可(选择“最后一行的行号”)查询行列固定的表格,还可对数据源不在第一列的表格(在SQL框中修改单元格区间)进行查询。可编辑SQL查询条件。查询要求:工作表名称相同、单元格区间对应。注意:如果查询包括子文件夹下的所有工作薄,则子文件夹中不能有与当前工作薄名称相同的工作薄,而且所有工作薄的“查询”工作表不会被列入查询之列。7、多薄修改:将已选择的单元格(或多个单元格)中的数据(或公式)修改到当前文件夹下的所有工作薄(或选择的工作薄)的对应工作表的相应单元格中。
8、批量打印:打印某一文件夹(或当前文件夹)下的所有工作薄,可以选择打印“整个工作薄”、按名称“选定工作表”、按位置“指定工作表”,可选择“打印份数”、“逐份打印”。9、插入图片:根据单元格区域中的图片名称(无后缀),或直接选择图片插入到某些单元格中(或做为批注);可以选择插入到当前工作表、所有工作薄、或选择的工作薄中。单元格按位置、工作表按名称。删除批注:删除所选择的单元格区域的全部批注(图片)。10、分类汇总:根据所选择的单元格区域的首行首列进行交叉匹配汇总(求和),并将汇总结果放置一个自动新建的“分类汇总”工作表中。11、数据匹配:从所选择的(包含表头字段的)两个表格区域的第一列中匹配相同行(或不同行),返回第一个所选择的表格区域的各列内容,并将结果放置到第三个选择的单元格区域中。可跨工作表匹配,但不支持跨工作薄。提取数字:从所选择的单元格区域中批量提取数字,并放置到所选择的另一个单元格区域。提取中文:从所选择的单元格区域中提取中文。提取英文:从所选择的单元格区域中提取英文。12、数据有效性:⑴生成数据有效性:将所选择的单元格区域的数据生成数据有效性下拉列表并放置到重新选择的单元格区域中。⑵删除数据有效性:删除所选择的单元格区域中的数据有效性,并保存所选择的数据。13、插入空行:在当前单元格下隔行插入空行。插入表头:在所选择的表头区域下方,隔行插入表头(如:工资条)。14、清除数据:清除当前工作表或当前工作薄中所有工作表的指定行以下的所有数据。 默认“取消”按钮(即按Enter后)仅清除当前工作表中指定行号以下的所有数据。删除空行:删除当前单元格以下的所有空行或0值行。删除某行:删除当前单元格以下含有某内容的所有行。删除单元格区域的重复值:删除所选择的单元格区域中的重复值。删除表格中的重复行:删除表格中的所有重复行(即表头以下所有各列内容均相同的行)。15、特效开关:开启/关闭高亮显示当前单元格所在的行列效果,避免看错行列。鼠标放在表格已使用的单元格区域之外时不显示特效。隐藏错误:隐藏所选择的单元格内的公式计算错误。显示错误:显示公式计算错误。16、收发邮件:可给多人发送邮件,并添加附件。点击“登录邮箱”,可打开登录邮箱窗口。发送邮件后下拉列表框中会显示邮箱地址,可选择或输入邮箱地址,“回车”即可登录邮箱。17、合并单元格:将所选择的多行多列单元格区域中内容相同的相邻单元格批量横向合并;单列则纵向合并。取消合并:取消合并并自动填充内容。二、注意:1、本插件支持32位excel10/等多个版本,不支持64位excel;可在windows32位或64位系统上安装。具体参照excel2、多薄合并、多表合并、多薄汇总、多表汇总、多薄修改:要处理的工作薄(或工作表)首行首列位置必须相同。3、插件功能尚在不断扩充、完善中,建议隔段时间从上面的360云盘链接中下载安装和使用,并提出宝贵意见和建议。三、安装使用:1、下载、安装时可能受360警告、拦截,甚至直接被当做木马病毒消灭了,这是360对未知程序的正常处理方式,选择“添加信任”、“信任程序所有操作“、“直接运行”即可,如果被消灭了,可以找回。安装完成后,在excel203工具栏或excel2010“多薄多表”选项卡中会有下图中的工具栏和功能按钮。2、默认安装位置: C:\WINDOWS\mergebooks.dll
如果电脑进行了多用户设置,可把Mergebooks.dll复制/粘贴到“COM加载项”点击“添加”后出现的对话框中(按照下面第二步)3、Excel中调出/安装“多薄多表”方法:第一步:把“COM加载项”拖到工具栏上。(如有,可省略)第二步:点击“COM加载项”进入“COM加载项”窗口(如图所示)。先取消左边框中勾,关闭工作薄;再复制Mergebooks.dll,然后打开工作薄再次进入“COM加载项”,点击“添加”,“粘贴”,“确定”返回,打上勾,“确定”返回。Excel2010及以上版本中“调出COM加载项”方法如下:或者使用如下方法:4、Excel2010调出“多薄多表”方法:文件——选项——自定义功能区——(右边)“多薄多表”(打勾)5、开启禁用项目:如果没有出现“多薄多表”功能区按钮,则看是否被列为“禁用项目”,可以手工启用已被禁用的项目。开发者:;或QQ:24916551365513
1.最厉害的……打三国杀这个是著名的Excel三国杀,马蜂窝团队制作的。这个是著名的Excel三国杀,马蜂窝团队制作的。2.制作项目计划老师的作品通过Excel 2010实现的项目计划的模板,本模板实现的功能如下:1、通过Group的功能实现任务/子任务分层显示2、节假日的设置说明,见Holiday表3、使用条件格式化,绘制条形图,包括:计划任务的条形图、完成任务的条形图、当前日期的日期线4、“完成率”手工填写,未做自动计算5、“周期”计算的是工作日,扣除了节假日6、“当前日期”为工作日时,条形图中以红色线显示7、右边条形图上方的日期只显示工作日,每周5天,未扣除节假日8、“起始日期”为右边条形图上方日期条的初始日期。修改起始日期时,右边条形图上方的日期自动计算变更,但第几周和月份需要手工处理9、使用时,最好通过插入行的方式,在当前任务区域内增加任务,如此不需要修改条件格式化的公式以及其他相关计算公式;条形图日期长度不够的时候,通过拖拽单元格,复制公式的方式增加条形图日期长度制作方法3.计算器微软官方链接,不多说。4.彩蛋你可能听说过旧版本的Excel内置的彩蛋赛车游戏,现在新版Excel又添加了热门的愤怒小鸟,不过激活它有点小麻烦。步骤:打开一个空的文件,必须是Excel2007 SP以上版本。备注: 要关掉其它Excel表格把文件名改为“ARoofPill.xlsx” ( ARoofPill 是微软Excel内置宏的名称)点击单元格 C23,把宽度调为30(确保一定是30)把C23字体调为20把以下公式粘贴到C23=SUBSTITUTE(ADDRESS(BIN2DEC(1&REPT("0",5)),6*7,4) & CHAR(82)&MID("SMILE",3,2) & ADDRESS(2^5,57*3,4) & MID("COOL",3,456789),"32","")
点击Enter然后……:)4.万能的VBA①写游戏除了三国杀外 还有这个来自来自Einsphoton“呆呆”的作品
这是一个用于Win7扫雷的修改器,是很久以前无聊的产物...如图所示,可以锁定时间及获取地雷的位置。代码如下,另附图片种....【组件】
窗体:frmMain
按钮:btnCatchGame,btnRefresh
选择框:chkGameTime
Option Explicit
'如果是64位系统,则“必须更新此项目中的代码。请检查并更新 Declare 语句,然后用 PtrSafe 属性标记它们”。
Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Private Declare Function module32First Lib "kernel32" Alias "Module32First" (ByVal hSnapShot As Long, lppe As moduleENTRY32) As Long
Private Declare Function module32Next Lib "kernel32" Alias "Module32Next" (ByVal hSnapShot As Long, lppe As moduleENTRY32) As Long
Private Declare Function Process32First Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapShot As Long, lppe As PROCESSENTRY32) As Long
Private Declare Function lstrcmpi Lib "kernel32" Alias "lstrcmpiA" (ByVal lpString1 As String, ByVal lpString2 As String) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function WriteProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function ReadProcessMemory Lib "kernel32" (ByVal hProcess As Long, ByVal lpBaseAddress As Any, lpBuffer As Any, ByVal nSize As Long, lpNumberOfBytesWritten As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPmodule = &H8
Private Const CB_SHOWDROPDOWN = &H157
Private Type moduleENTRY32
dwSize As Long
th32ModuleID As Long
th32ProcessID As Long
GlblcntUsage As Long
ProccntUsage As Long
modBaseAddr As Long
modBaseSize As Long
hModule As Long
szModule As String * 256
szExePath As String * 1024
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * 1024
Private Const PROCESS_ALL_ACCESS = &H1F0FFF
Private hProcess As Long
Private PID As Long
Private Type asmNum
nuM1 As Byte
nuM2 As Byte
nuM3 As Byte
Private adrTime As Long
Private adrMine As Long
Private Function GetProcIdByName(ByVal ProcName As String) As Long
Dim PE32 As PROCESSENTRY32
Dim Procid As Long
Dim hSnapShot As Long
hSnapShot = CreateToolhelp32Snapshot(ByVal TH32CS_SNAPPROCESS, ByVal 0)
PE32.dwSize = LenB(PE32)
Process32First hSnapShot, PE32
If lstrcmpi(Trim$(ProcName), Trim$(PE32.szExeFile)) = 0 Then
Procid = PE32.th32ProcessID
PE32.szExeFile = vbNullString
Loop Until Process32Next(hSnapShot, PE32) = 0
CloseHandle hSnapShot
GetProcIdByName = Procid
End Function
Private Function GetModuleBaseByProcName(ByVal ModuleName As String) As Long
Dim ME32 As moduleENTRY32, ModuleBase As Long
Dim hSnapShot As Long
hSnapShot = CreateToolhelp32Snapshot(ByVal TH32CS_SNAPmodule, ByVal PID)
ME32.dwSize = LenB(ME32)
module32First hSnapShot, ME32
If lstrcmpi(Trim$(ModuleName), Trim$(ME32.szModule)) = 0 Then
ModuleBase = ME32.modBaseAddr
ME32.szModule = vbNullString
Loop Until module32Next(hSnapShot, ME32) = 0
CloseHandle hSnapShot
GetModuleBaseByProcName = ModuleBase
End Function
Private Function GetMemory(ByVal Adderss As Long, Optional Length As Byte = 4) As Long
ReadProcessMemory hProcess, Adderss, GetMemory, Length, 0
End Function
Private Sub SetMemoryAsm(ByVal Adderss As Long, NumVal As asmNum)
WriteProcessMemory hProcess, Adderss, NumVal, 3, 0
Private Function FindGame() As Boolean
PID = GetProcIdByName("MineSweeper.exe")
Select Case PID
FindGame = False
Dim adrBase As Long
adrBase = GetModuleBaseByProcName("MineSweeper.exe")
adrTime = adrBase + &H21446
adrMine = adrBase + &H868B4
FindGame = True
End Select
End Function
Private Sub TrainerState(ByVal State As Boolean)
chkGameTime.Enabled = State
btnRefresh.Enabled = State
Select Case State
btnCatchGame.Caption = "ReleaseGame"
Case False
btnCatchGame.Caption = "CatchGame"
chkGameTime.Value = False
End Select
Private Sub AsmState(ByVal State As Boolean)
Dim asm As asmNum
Select Case State
asm.nuM1 = &H90
asm.nuM2 = &H90
asm.nuM3 = &H90
Case False
asm.nuM1 = &HD9
asm.nuM2 = &H58
asm.nuM3 = &H1C
End Select
Call SetMemoryAsm(adrTime, asm)
Private Sub chkGameTime_Click()
AsmState (chkGameTime.Value)
Private Sub isOpen(ByVal State As Boolean)
Select Case State
If FindGame = True Then
hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, PID)
TrainerState (True)
Case False
If FindGame = True Then
AsmState (False)
CloseHandle hProcess
End Select
Private Sub btnCatchGame_Click()
Select Case btnCatchGame.Caption
Case "CatchGame"
isOpen (True)
Case "ReleaseGame"
isOpen (False)
TrainerState (False)
End Select
Private Sub btnRefresh_Click()
Dim mineColumn As Byte, mineLine As Byte
Dim adrPoint As Long, adrTemp As Long, adrColumn As Long
Dim i As Byte, j As Byte
btnRefresh.Enabled = False
adrTemp = GetMemory(adrMine)
adrPoint = GetMemory(adrTemp + &H10)
mineLine = GetMemory(adrPoint + &H8) - 1
mineColumn = GetMemory(adrPoint + &HC) - 1
adrPoint = GetMemory(adrPoint + &H44)
adrPoint = GetMemory(adrPoint + &HC)
For i = 0 To 30
adrColumn = GetMemory(adrPoint + i * 4)
adrColumn = GetMemory(adrColumn + &HC)
For j = 0 To 23
If i & mineColumn Or j & mineLine Then
Sheet1.Cells(j + 1, i + 1) = ""
Sheet1.Cells(j + 1, i + 1) = GetMemory(adrColumn + j, 1)
btnRefresh.Enabled = True
Private Sub UserForm_Initialize()
TrainerState (False)
Sheet1.Cells(1, 2) = 1
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
isOpen (False)
我们微生物免疫的老师用excel做了个题库,每道题做完显示答案,还有时间控制,最后做完题目给验证码,老师根据验证码知道你考了多少分。。。反正我不是学计算机的也不知道这个怎么样,但是我们现在整个学校的孩纸都在被这个刷题的过程折磨的要死要活的。。。ヽ( ̄д ̄;)ノ
已有帐号?
无法登录?
社交帐号登录}

我要回帖

更多关于 excel vba视频教程 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信