快速从表格中提取数据中的Office宏
2007-08-25 14:25:09 来源:WEB开发网核心提示:方法一:利用快捷键逐个提取这个实例的效果是:点选要提取数据的单元格后,只要按一下Ctrl+d键,快速从表格中提取数据中的Office宏,数据就自动拷贝到你指定的位置,并且可以连续操作,必须在单元格格式中,将“合并单元格”项取消掉,后拷贝的数据会自动顺延到指定位置的下一单元格中,Step1 启动Excel新建一个文件
方法一:利用快捷键逐个提取
这个实例的效果是:点选要提取数据的单元格后,只要按一下Ctrl+d键,数据就自动拷贝到你指定的位置,并且可以连续操作,后拷贝的数据会自动顺延到指定位置的下一单元格中。
Step1
启动Excel新建一个文件,保存为DataCenter.xls。点击“工具→宏→录制新宏”菜单命令,设置宏名为CopyRange,快捷键设为Ctrl+d(注意:不要跟系统的快捷键冲突),点击“确定”按钮。
Step2
点击“工具→宏→停止录制”菜单命令。怎么刚开始录制就要停止呢?这样做的目的只是要获得一个带有快捷键的宏的框架,具体代码还得自己输入。按Alt+F11键打开Visual Basic编辑器窗口,双击打开“工程”窗格中的“模块1”,删除最后的“End Sub”语句并加入如下代码(代码和实例,可以直接从http://fly2sPRing.blog.cfan.com.cn上获得):
Selection.Copy '拷贝所选单元格
TheSel = ActiveCell.Address '存储单元格位置
For I = 1 To 100 '设定从H列的第1行开始,到100行停止,H、1、100这三个参数,你可以根据需要改动
If Range("H" & I) = "" Then '如果H列I行为空
Range("H" & I).Select '选择H列I行的单元格
ActiveSheet.Paste '粘贴单元格
Range(TheSel).Select '回到拷贝位置
GoTo line1 '跳出循环
End If
Next I
line1: End Sub
Step3
关闭Visual Basic编辑器窗口返回Excel。将其他Excel表格复制到DataCenter.xls中,点选需要提取数据的单元格,按Ctrl+d键,就可以把它拷贝到H列的第1行了,其他数据的提取以此类推。
方法二:多单元格同时提取
上面的方法一次只能提取一个单元格,在此基础上再增加一个简单的宏,可以达到一次提取多个单元格的效果。
Step1
首先假设如图所示是需要提取数据的表格形式。录制一个新宏,名称为CopyAll,快捷键设为Ctrl+e,在宏内输入以下代码(这次千万别删除“End Sub”):
Range("B1").Select '选择“姓名”后的数据
CopyRange '调用上一方法中的宏,下同
Range("B2").Select '选择“性别”后的数据
CopyRange
Range("B3").Select '选择“年龄”后的数据
CopyRange
Range函数中的参数,表示你想要提取数据的单元格位置,可以根据需要随意设置。
Step3
返回Excel,在B1、B2、B3单元格中分别输入“张小乐”、“男”、“18”。按Ctrl+e键,这些人物数据很快就被拷贝到H1~H3单元格中。以此类推可继续提取其他数据。
上面的方法并不完美,其他表格中的数据必须拷贝到DataCenter.xls后才能进行提取操作,有兴趣的朋友可以研究一下如何跨文件提取数据。另外,如果拷贝的是Word表格,必须在单元格格式中,将“合并单元格”项取消掉,否则不能成功提取。
这个实例的效果是:点选要提取数据的单元格后,只要按一下Ctrl+d键,数据就自动拷贝到你指定的位置,并且可以连续操作,后拷贝的数据会自动顺延到指定位置的下一单元格中。
Step1
启动Excel新建一个文件,保存为DataCenter.xls。点击“工具→宏→录制新宏”菜单命令,设置宏名为CopyRange,快捷键设为Ctrl+d(注意:不要跟系统的快捷键冲突),点击“确定”按钮。
Step2
点击“工具→宏→停止录制”菜单命令。怎么刚开始录制就要停止呢?这样做的目的只是要获得一个带有快捷键的宏的框架,具体代码还得自己输入。按Alt+F11键打开Visual Basic编辑器窗口,双击打开“工程”窗格中的“模块1”,删除最后的“End Sub”语句并加入如下代码(代码和实例,可以直接从http://fly2sPRing.blog.cfan.com.cn上获得):
Selection.Copy '拷贝所选单元格
TheSel = ActiveCell.Address '存储单元格位置
For I = 1 To 100 '设定从H列的第1行开始,到100行停止,H、1、100这三个参数,你可以根据需要改动
If Range("H" & I) = "" Then '如果H列I行为空
Range("H" & I).Select '选择H列I行的单元格
ActiveSheet.Paste '粘贴单元格
Range(TheSel).Select '回到拷贝位置
GoTo line1 '跳出循环
End If
Next I
line1: End Sub
Step3
关闭Visual Basic编辑器窗口返回Excel。将其他Excel表格复制到DataCenter.xls中,点选需要提取数据的单元格,按Ctrl+d键,就可以把它拷贝到H列的第1行了,其他数据的提取以此类推。
方法二:多单元格同时提取
上面的方法一次只能提取一个单元格,在此基础上再增加一个简单的宏,可以达到一次提取多个单元格的效果。
Step1
首先假设如图所示是需要提取数据的表格形式。录制一个新宏,名称为CopyAll,快捷键设为Ctrl+e,在宏内输入以下代码(这次千万别删除“End Sub”):
Range("B1").Select '选择“姓名”后的数据
CopyRange '调用上一方法中的宏,下同
Range("B2").Select '选择“性别”后的数据
CopyRange
Range("B3").Select '选择“年龄”后的数据
CopyRange
Range函数中的参数,表示你想要提取数据的单元格位置,可以根据需要随意设置。
Step3
返回Excel,在B1、B2、B3单元格中分别输入“张小乐”、“男”、“18”。按Ctrl+e键,这些人物数据很快就被拷贝到H1~H3单元格中。以此类推可继续提取其他数据。
上面的方法并不完美,其他表格中的数据必须拷贝到DataCenter.xls后才能进行提取操作,有兴趣的朋友可以研究一下如何跨文件提取数据。另外,如果拷贝的是Word表格,必须在单元格格式中,将“合并单元格”项取消掉,否则不能成功提取。
更多精彩
赞助商链接