需要Excel VBA的最佳简短示例
这是Joel的一个…
我正在寻找方法向Excel用户演示(没有编程经验)如何学习一些Excel VBA可以使他们的生活与Excel工作更容易一点。
首先想到的是使用复制电子表格的手动调整的示例,例如对所有数据的单击条件格式化。 例如:根据用户input的阈值,加上红色,橙色或绿色的所有数字,再加上一些其他派生数据,如当前的商业周。
我希望这样一个简短的VBA例子不应该太难掌握,以前从来没有写过一行代码的人,希望能够学习一些Excel VBA。
但是,在这个例子中,编写代码的时间并不比在Excel中手动应用条件格式快得多。 所以我想知道社区里是否有人有更好的例子来certificate使用Excel VBA的好处。
理想的例子会有以下特点:
- 显着节省时间(大T,其中T =手动程序的时间/代码的时间)。
- 非抽象的日常电子表格示例。
- 最终结果不能轻易实现。
- 使用简短的基本VBA代码即可实现。
请记住,目标受众正在开始编程。
如果可以的话,看着他们使用Excel半小时,你会发现最好的机会。 当他们打开一个电子表格时,自动调整所有列,将列A格式化为date,右alignment列J,删除第2行至第5行,并将打印方向更改为横向,然后find赢家。 让他们再次做,但macros录音机。 然后重播macros录制器。
通过与他们在现实生活中使用的东西一起工作,将会产生更多的影响。
第一次,你不必一天半小时就把它们保存起来。 保存他们30秒的苦差事,他们会开始考虑他们想要的所有事情。 根据我的经验,他们会很快过头。 他们很快就会希望Excel能够填写网页表单,导入信息并为他们提供咖啡。
用VBA创build你自己的“函数”,你可以像表单中的另一个函数一样使用它。
你可以做简单的Excel中不可能的事情,或者很难实现或重用。
一个例子:
在VBA中创build一个新模块,添加如下代码:
Public Function SizeOfFile(a As String) SizeOfFile = VBA.FileLen(a) End Function
您现在可以在单元格中的公式中使用SizeOfFile。
如果单元格A1包含文件的名称,B1填充=SizeOfFile(A1)
以获取大小。
也
您可以显示录制(和编辑)macros,重复您经常执行的步骤。
目标受众中的人是否是强大的用户?
如果是这样,那么如何使用外部引用来合并来自多个工作簿的数据? 我不确定外部引用是否是实现这一目标的最佳方式,我不确定这对于刚接触VBA的人来说是多么困难,但这就是我过去所做的。
例1
遵循命名约定有许多excel文件:
c:\data1.xls c:\data2.xls c:\data3.xls
我希望能够在一列inputID号,并有一个VBA来为我所有的其他列获取数据。 我select使用外部引用来做到这一点,因为这样我就不用担心打开和closures文件,并担心这些文件是否存在。
我想要的结果是这样的:
id data hyperlink 1 extRefA1 c:\data1.xls 3 extRefA1 c:\data3.xls 500 extRefA1 c:\data500.xls
我不需要VBA来创build超链接,但是我找不到一个简单的方法来创build没有VBA的外部引用。 我尝试使用INDIRECT,但参考工作簿必须打开间接工作。 所以,我用VBA来创build外部引用。
例2
这个例子与例子1类似,但是我必须结合不同的图表数据。
每个excel文件中的数据都在列中:
XY 1 5 2 10 3 5 4 60
我想要在行中组合的图表数据:
1 2 3 4 data1 5 10 5 60 data3 30 60 4 2 data500 25 45 20 5
所以我做了一个VBA,把公式数组包含一个TRANSPOSE中的外部参考 。
data1公式数组看起来像这样:
=TRANSPOSE('c:\[data1.xls]Sheet1'!$B$2:$B$5)
我不知道别人如何使用Excel和VBA,但这些对我来说是非常有用的。
弗朗西斯
我joinVBA后,首先尝试了一下VBA的步骤,并看到我的新团队每天早上花费30分钟的时间,汇总了大约1000个项目的报告,这些项目需要以不同的方式进行自动过滤以产生所需的计数。 用VBA打了几个小时就把这个任务按下了一个button,大约一秒钟。
任何像这样的循环都将满足您节省大量时间的首要标准。 也许是一个涉及从200个电话号码或地址列表中提取区号或门牌号码的任务?
这个问题是一个很棒的MSDN链接。 http://msdn.microsoft.com/en-us/library/aa203714(office.11​).aspx
拥有一切你需要一个简短的preso。