免费视频|新人指南|投诉删帖|广告合作|地信网APP下载

查看: 7994|回复: 19
收起左侧

[EXCEL] EXCEL中脚本的学习和应用

[复制链接]

55

主题

8740

铜板

36

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2264
发表于 2012-5-10 20:26 | 显示全部楼层 |阅读模式
最近开始接触excel中的脚本应用。发现脚本的确可以解决很多以前比较难解决或者必须用复杂的VBA来解决的问题。遂记录下学习之心得,与广大朋友共同学习。
1、初识Microsoft 脚本编辑器
         首先,必须确保你安装的是excel2003版本(2007版本取消了脚本编辑器),并且你的EXCEL安装的是完整版,如果是绿色版或者精简版,建议先找到安装光盘或者在网上先down一个完整版。
         安装好之后,就可以在【工具】——【宏】——Microsoft 脚本编辑器中打开脚本编辑器。或者直接按Shift+Alt+F11打开。
2、一个简单的例子
         先来看一个简单的例子。
11.jpg


要将多行多列的数变成1列。这个问题通常是用函数来解决的。我们先来看看函数的解法。
E1 =INDEX($A$1C$11,INT((ROW()-1)/3)+1,MOD(ROW()-1,3)+1)(这是我写的一个函数,写得复杂大家多指教)
尽管这个函数也不算复杂,但是要用到index,mod等函数,还要计算行列以确定除数和被除数。着实有些复杂。
再来看看脚本编辑器中是如何处理此类问题的。

  

游客,如果您要查看本帖隐藏内容请回复


1、打开脚本编辑器——按Ctrl+H,调出查找/替换对话框(或是按【编辑】-【查找和替换】).然后查找td,替换成tr,全部替换。

2、再回到excel界面,界面上弹出一个刷新工具栏,点击刷新”,看到了什么,多行多列已经转化为了1列。(这个1列实际上是3列合并单元格后形成的,可点击工具栏的【合并居中按钮】 来取消。)

看,用脚本编辑器就是这么简单,只需要简单的替换和刷新两步。
33.gif

仍然是替换和刷新两步。是不是很简单呢?
这个方法更加优越的一点在于,用拼写检查只能替换英文,但是用脚本编辑器则不受该限制。
大家可以试试,再将上例中的”excel精英培训替换为”excelpx”,如果用拼写检查则无法实现,用脚本编辑器则可以转换自如。


不仅是对于批注,其他窗体控件如命令按钮、复选框等无法在excel中直接进行替换的也可以在脚本编辑器中进行替换。

游客,如果您要查看本帖隐藏内容请回复


下面是稍微要有些html语言基础的,不过没有也没关系,咱又不摆弄网页,只需要理解一些基本的规则和代码就可以。
首先得知道,html语言中,<table>来定义表格, <TR>定义表格的行,<TD>定义表格的列。脚本编译器是将工作表内容按照先行后列的顺序翻译的,也就是说,如果你的sheet1108列数据,那么将有10<TR>标签,同时会有10*8=80<TD>标签。
这从上一讲的图中可以很清楚的看出来,脚本编辑器文档大纲视图中,在<table>标签中,包含了很多<TR>标签(代表每个表格含有很多行),每个<TR>标签又包含了很多<TD>标签(代表每一行有很多列)。
55.jpg

Html语言的写法是将代码写在每个封闭的标签中,所谓封闭,是指有开始标签和结束标签,结束标签一般是在开始标签前面加上一个”/”,例如<table></table>就是一对标签。(html语法允许不封闭,但是建议大家写代码的时候还是按照规定来写)

自己写代码
下面来自己写一些代码。我所谓的自己写代码是直接在excel中写,然后通过剪贴板来转换。这是一种常用的方法
具体操作如下:
1CTRL+C+C打开剪贴板,或者菜单——编辑——office剪贴板,调出剪贴板。
2、将要复制的代码或内容复制到剪贴板
3、单击剪贴板粘贴
4、鼠标右键——选择性粘贴,弹出对话框,粘贴方式选择unicode文本。
首先来写以下这段代码:
<table><th>姓名</th><th>年龄</th><tr><td>张三</td><td>25</td></tr></table>
然后用上面的方法,粘贴为unicode文本之后,看到了什么?
晦涩难懂的代码变成了
姓名 年龄
张三  25

这是怎么回事呢?让我们分析上面的代码:
<table><th>姓名</th><th>年龄</th><tr><td>张三</td><td>25</td></tr></table>
最外层的<table></table>标签是定义表格的
紧接着是两个<th></th>标签,这是用来定义表头用的,也可称之为标题,在数据库中叫做字段。
接下来红色部分<tr></tr>定义了一行,中间有两个<td></td>标签,表示有两列,第一列的数据是第一个<td></td>包含的“张三,第二列数据是第二个<td></td>包含的25.


当然,上面的例子只是为了说明代码的作用,实际中很少有用这样的代码来编写表格的。写这样一长串代码比直接在工作表中输入数据不知道要费时多少倍。但是,通过这样一个实例,我们或许能找到一些解决特殊问题的方法。

问题一:
有一列数据,我们要将每个单元格的第一个字符变成粗体(或是变成楷体,颜色变成红色等等)。应该如何解决呢
66.jpg

用格式刷或者选择性粘贴——格式 当然是不行的,我们可以试着用V,但是代码同样复杂。
这样,倒不如用脚本来试试。
C1="<table><B>"&LEFT(A1)&"</B>"&MID(A1,2,99),下拉
复制,粘贴,然后选择性粘贴为unicode文本。试试看,是不是很快的就达成效果了。
77.gif

这里<B></B>是用来加粗字体用的,其他字体类的标签有<I></I>斜体,<U></U>下划线 <font color=”red”></font>用来定义字体颜色为红色,<font face=”隶书”></font>用来定义字体为隶书等等。大家可以找相关的html语言教程来看看。
大家可以引申一下,如何将文本与数字相连的单元格中的文本用粗体,蓝色表示,数字用斜体红色表示。

88.gif
昨天好似看到一贴要求将一个工作簿中一百个工作表进行排序,象这样的问题一般都会想到必须要用VBA,可实际上不用VBA,只用技巧一样可以解决。下面是我录制的一段动画,时间较长,大家可能会看的云里雾里,其实道理很简单,就是在“脚本编辑器”里把<x:excelworksheet>与</x:excelworksheet>之间的NAME标签和它下面那行进行重新排序,排好序后再复制回“脚本编辑器”中。
可能有人未完整安装EXCEL,也不要紧,把工作簿另存为网页文件,用IE打开网页文件,查看-源文件,一样可以看到同样的代码并进行调整,将调整好代码的网页文件保存后用EXCEL打开,工作表已经被排好序了,再另存为普通工作簿即可。
因为“脚本编辑器”可以解决很多EXCEL底层问题,因此2007,2010版取消“脚本编辑器”实在是一大损失!!!

其实法老师的解法很不错,尽管过程稍复杂了一些。
我这里将它精简了一下,以利更多人理解。
其实主要思想就是利用book中保存的工作表的信息,复制到excel之后进行排序。
1、  打开脚本编辑器,选中book1,现实book1代码,查找到worksheet部分。将<x:ExcelWorksheets></x:ExcelWorksheets>标签卡中的代码全部复制到excel
2、  上面复制的就是工作表信息的代码了。对其每4行进行组合,然后对组合后的单元格进行排序
3、  最后复制排序后的单元格,再替换掉原来的代码即可
几点注意:粘贴至excel的时候,要粘贴为unicode文本,否则会出错
粘贴回脚本编辑器的时候,要右键,粘贴为html,这样才不会出现乱码。

99.gif

100.gif
通过上例的学习,我们也可以得到批量更改工作表名的方法,例如我们要将上面工作表的sheet1更改为1sheet2更改为2……,我们只需在脚本编辑器中查找替换,然后刷新excel就可以了。但是要注意的是,查找的时候不能直接查找sheet,否则替换很多无关内容,我们可以查找<x:Name>Sheet,替换为<x:Name>
下面还有几个零星的用脚本解决的问题,大家有兴趣的可以去看看。

用函数批量合并单元格
批量合并单元格一般都是用VBA或者用数据透视表来解决的,这里提供一种利用函数和脚本的方法。
    101.gif
B2=IF(A2=A1,"","<table><tr><td rowspan="&COUNTIF(A:A,A2)&">"&A2&"</td></tr></table>")
下拉,然后复制至剪贴板,单击剪贴板粘贴,再右键——选择性粘贴——粘贴为unicode文本

excel批量分行
102.gif
     这里提供一种方法,具体是将一列数据中的文本和数字分开,并且1行分成2行。
(还是用脚本解决,最近喜欢上了脚本)
函数公式如下:="<table><tr><td>"&LEFT(A1,MATCH(1,1/ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0)-1)&"<br>"&MID(A1,MATCH(1,1/ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)),0),99)&"</td></tr></table>"



excel中的邮件合并
103.gif

7711

主题

31万

铜板

892

好友

超级版主

地信网论坛贵宾

Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17

积分
128764

宣传勋章优秀斑主灌水勋章活跃勋章贡献勋章童话节勋章

QQ
发表于 2012-7-21 12:49 | 显示全部楼层
还隐藏了呀,看看

评分

参与人数 1铜板 +2 收起 理由
admin + 2 亲,你好快哦~~~

查看全部评分

该会员没有填写今日想说内容.
回复 支持 反对

使用道具 举报

1

主题

4万

铜板

11

好友

地信院士

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
2804
发表于 2012-8-4 12:51 | 显示全部楼层
学习一下 看看大家有什么好办法
GDP32 V8讨论群仅限GDP32 V8仪器
回复 支持 反对

使用道具 举报

1

主题

8万

铜板

24

好友

地信学员

Rank: 12Rank: 12Rank: 12

积分
1905
发表于 2012-8-7 09:15 | 显示全部楼层
到底怎么样
回复 支持 反对

使用道具 举报

1

主题

2846

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
376
发表于 2012-8-8 00:57 | 显示全部楼层
EXCEL中脚本的学习和应用EXCEL中脚本的学习和应用EXCEL中脚本的学习和应用
回复 支持 反对

使用道具 举报

0

主题

292

铜板

0

好友

技术员

Rank: 3Rank: 3

积分
46
发表于 2012-10-29 10:29 | 显示全部楼层
学习。。。学习。。。
回复 支持 反对

使用道具 举报

1

主题

3941

铜板

5

好友

工程师

Rank: 7Rank: 7Rank: 7

积分
546
发表于 2012-10-29 11:16 | 显示全部楼层
回复一下,看看后续内容
回复 支持 反对

使用道具 举报

2

主题

376

铜板

2

好友

助理工程师

Rank: 5Rank: 5

积分
165
发表于 2012-11-1 21:22 | 显示全部楼层
下载地址:点击该链接跳至迅雷下载

转自地信网:http://bbs.3s001.com/forum.php?mod=viewthread&tid=109222&reltid=111737&pre_thread_id=0&pre_pos=5&ext=
回复 支持 反对

使用道具 举报

0

主题

206

铜板

1

好友

实习生

Rank: 1

积分
3
发表于 2017-9-13 15:37 | 显示全部楼层
kankankankan
回复 支持 反对

使用道具 举报

0

主题

958

铜板

5

好友

助理工程师

Rank: 5Rank: 5

积分
153
发表于 2017-11-7 21:08 | 显示全部楼层
谢谢楼主
回复

使用道具 举报

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

本版积分规则

在线客服
快速回复 返回顶部 返回列表