Excel获取单元格批注
2016-03-29 18:35
218 查看
Microsoft Office中的Excel软件有着强大的数据统计分析功能,最近自己碰到一个问题,需要将一列单元格中的批注提取到另外的一列中去。如果数量比较少大可以通过“Ctrl+C”和“Ctrl+V”来实现,但是面对成百上千行数据的就出现麻烦了。自己就在网上搜索了一些关于此方面的资料,发现Excel有两个方面的应用非常实用:VBA和宏表函数,这里只是举出其中两个简单的例子,如有兴趣可以深究。
一、获取单元格批注
VBA全称为:Visual Basic for Applications,是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。虽然这种语言较为古老,但在Microsoft Office软件风靡全球的情形下还是有很大的应用价值,特别是一些用户非常熟悉了Excel的操作界面之后就对它有着非常大的依赖性,通过Excel自带的VBA程序来对数据进行处理可以带来极大的方便。
下面就讲讲如何通过VBA获取单元格的一个小例子,主要参考了http://club.excelhome.net/forum.php?mod=viewthread&tid=938019中5楼“xinhunter”发的帖子来实现的。
如下图所示,A列中有多行带有批注的单元格,如何将A列中的单元格都提取到对应的E列中来呢?通过如下的几个步骤可以成功地获取单元格批注。
1、 打开VBA,新建模块,创建用户自定义函数,如下图所示:
2、 编写自定义函数GetComment()
Function GetComment(myRange As Range) As String
GetComment = myRange.Comment.Text
End Function
如下图所示:
3、 调用自定义函数GetComment()。在E1的编辑框中输入:=GetComent(A1),选定之后按“F9”,就会变成如下的情况:
按“F9”调用GetComment()函数之后,成功获取批注如下:
4、 调用SUBSTITUTE()函数,去掉多余文本
从上图可以看出,E1单元格中已经成功地将A1中的批注获取到了,但是包含了当前编辑者的姓名,如上图中的“ZKH:”,可以通过调用如下函数去掉多于的用户名文本。如下图所示:
5、拖拽填充柄,依次获取单元格批注
二、获取某路径下文件名
除了Excel自带的函数以及通过VBA自定义的函数之外,我们在Excel中有可能用到的一种函数叫做“宏表函数”,以下也通过一个具体的应用小例子来简单演示。
在应用过程中,也许会碰到将一堆文件的名字加以统计起来的需求,如果文件数较多的时候是个麻烦的事情,Excel中自带的宏表函数可以很轻松地解决类似这样的问题,主要以下操作步骤:
1、 定义新名称
通过“公式→定义新名称”,定义一个“myfile”的宏表函数,其中名称myfile调用了Excel中自带的“FILES()”的函数,如下所示:
2、 调用myfiles(),在C1输入“=myfile”按“F9”
路径文件如下:
运行效果如下:
3、 调整效果
如上图所示,将“D:\新建文件夹\”路径下的4个文件名都获取到C1的单元格中,能否将文件名逐个地依次获取到单元格呢?答案是可以的,我们还可以对指定的文件类型加以获取:
调用INDEX()函数,如下:
拖拽填充柄如下:
4、 加条件判断
如上图所示,下拉的单元格数超出了文件数的时候,容易出现错误乱码如“#REF!”,可通过IF条件函数加以判断如下:
5、 指定文件类型获取
如在myfiles名称中指定文件类型,所定义的宏表函数可只获取指定的文件名列表,如下指定.xls文件类型:
结果如下:
2014-10-27,为了每次使用方便,通过代码创建以上名称以及调用:
//VBA,运行宏创建名称:
Sub myFile()
' 获取路径下所有文件名'
ActiveWorkbook.Names.Add Name:="myfile", RefersToR1C1:= _
"=FILES(""C:\Users\ZKH\Desktop\2014-10-20\*.*"")"
ActiveWorkbook.Names("myfile").Comment = ""
End Sub
//调用
=IF(ROW()>COUNTA(myfile),"",INDEX(myfile,ROW()))
一、获取单元格批注
VBA全称为:Visual Basic for Applications,是一种Visual Basic的一种宏语言,主要能用来扩展Windows的应用程式功能,特别是Microsoft Office软件。虽然这种语言较为古老,但在Microsoft Office软件风靡全球的情形下还是有很大的应用价值,特别是一些用户非常熟悉了Excel的操作界面之后就对它有着非常大的依赖性,通过Excel自带的VBA程序来对数据进行处理可以带来极大的方便。
下面就讲讲如何通过VBA获取单元格的一个小例子,主要参考了http://club.excelhome.net/forum.php?mod=viewthread&tid=938019中5楼“xinhunter”发的帖子来实现的。
如下图所示,A列中有多行带有批注的单元格,如何将A列中的单元格都提取到对应的E列中来呢?通过如下的几个步骤可以成功地获取单元格批注。
1、 打开VBA,新建模块,创建用户自定义函数,如下图所示:
2、 编写自定义函数GetComment()
Function GetComment(myRange As Range) As String
GetComment = myRange.Comment.Text
End Function
如下图所示:
3、 调用自定义函数GetComment()。在E1的编辑框中输入:=GetComent(A1),选定之后按“F9”,就会变成如下的情况:
按“F9”调用GetComment()函数之后,成功获取批注如下:
4、 调用SUBSTITUTE()函数,去掉多余文本
从上图可以看出,E1单元格中已经成功地将A1中的批注获取到了,但是包含了当前编辑者的姓名,如上图中的“ZKH:”,可以通过调用如下函数去掉多于的用户名文本。如下图所示:
5、拖拽填充柄,依次获取单元格批注
二、获取某路径下文件名
除了Excel自带的函数以及通过VBA自定义的函数之外,我们在Excel中有可能用到的一种函数叫做“宏表函数”,以下也通过一个具体的应用小例子来简单演示。
在应用过程中,也许会碰到将一堆文件的名字加以统计起来的需求,如果文件数较多的时候是个麻烦的事情,Excel中自带的宏表函数可以很轻松地解决类似这样的问题,主要以下操作步骤:
1、 定义新名称
通过“公式→定义新名称”,定义一个“myfile”的宏表函数,其中名称myfile调用了Excel中自带的“FILES()”的函数,如下所示:
2、 调用myfiles(),在C1输入“=myfile”按“F9”
路径文件如下:
运行效果如下:
3、 调整效果
如上图所示,将“D:\新建文件夹\”路径下的4个文件名都获取到C1的单元格中,能否将文件名逐个地依次获取到单元格呢?答案是可以的,我们还可以对指定的文件类型加以获取:
调用INDEX()函数,如下:
拖拽填充柄如下:
4、 加条件判断
如上图所示,下拉的单元格数超出了文件数的时候,容易出现错误乱码如“#REF!”,可通过IF条件函数加以判断如下:
5、 指定文件类型获取
如在myfiles名称中指定文件类型,所定义的宏表函数可只获取指定的文件名列表,如下指定.xls文件类型:
结果如下:
2014-10-27,为了每次使用方便,通过代码创建以上名称以及调用:
//VBA,运行宏创建名称:
Sub myFile()
' 获取路径下所有文件名'
ActiveWorkbook.Names.Add Name:="myfile", RefersToR1C1:= _
"=FILES(""C:\Users\ZKH\Desktop\2014-10-20\*.*"")"
ActiveWorkbook.Names("myfile").Comment = ""
End Sub
//调用
=IF(ROW()>COUNTA(myfile),"",INDEX(myfile,ROW()))
相关文章推荐
- WPF中定义TabItem的可选区域(特别是当使用Label来呈现Header时)
- iOS开发——Touch ID 指纹识别
- 查看keystore内容命令
- js 获取当前周几
- Android Studio 2.0代码热更新
- Nginx+Django+Uwsgi架构部署
- 新浪微博千万级规模高性能、高并发的网络架构经验分享
- SQL 循环30日
- 2016-03-29 Spring框架
- 随笔 - Terminal Bash命令
- JDBC操作详解
- python连接MySQL源码
- 项目14-三角形类雏形(5)
- oracle执行计划详解
- mysql 列转行的技巧
- Canvas
- session同步问题
- NSSet和NSMutableSet
- 【图像理解】自动生成图像的文本描述
- Looper