• Excel答粉丝问:批量将单元格内容转为批注


    点赞再看,养成习惯;烈士暮年,壮心不已。

    微信搜索【亦心Excel】关注这个不一样的自媒体人。

    本文 GitHub https://github.com/hugogoos/Excel 已收录,包含Excel系统学习指南系列文章,以及各种Excel资料。

    前几天有粉丝问:请问有没有方法把单元格里内容批量编辑成批注,且每个单元格内容不同,主要是发票编码?

    我们知道批量给单元格区域添加相同的批注,可以通过选择性粘贴中的批注选项就可以实现,而且还是在现有批注基础上复制。

    因此这位粉丝的问题,是没法直接通过现有功能实现的,但是强大的Excel还是留了解决复杂问题的后路的,那就是VBA。今天小编就来分享如何把不同单元格内容批量转为批注。

    下面会用到VBA中Sub子程序,简单来说Sub子程序可以通过宏来执行,其他这里就不详细说明了,等着VBA系列文章再说,这里先解决问题。

    1、单元格自身内容变成批注

    我们先来做个简单的把单元格自身的内容变成本单元格的批注。

     

    如上图,把C4:C9单元格区域内容就添加成自己的批注。

    操作也很简单,首先点击「开发工具」选项卡「代码」命令组下的「Visual Basic」,即会弹出VBA开发窗体,接着在「VBAProject」→「Microsoft Excel 对象」下面选择当前工作表,并右击鼠标选择「插入」下的「模块」。

     

    没有「开发工具」选项卡的可以通过「文件」选项卡下的「选项」调出「Excel选项」对话框,点击「自定义功能区」,主选项卡勾选「开发工具」。

    此时「VBAProject」下面会多出一个「模块」,我们把默认的“模块1”重命名为“批注Sub子程序”,并且右边灰色区域也会多出一个空白编辑器。

     

    Sub 添加单元格内容为自身批注()
        Dim r As Range, rs As Range
        Set rs = Selection
        For Each r In rs
            If r.Value <> "" Then
                If Not r.Comment Is Nothing Then
                    r.Comment.Text Text:=r.Text
                Else
                    r.AddComment r.Text
                End If
            End If
        Next r
    End Sub

     

    并把上面代码复制到空白编辑器中,然后点击保存,弹出的对话框点击是,然后关闭VBA窗体。

     

    然后选中C4:C9单元格区域,点击「开发工具」选项卡「代码」命令组下的「宏」,然后选择上面代码中的方法名「添加单元格内容为自身批注」,点击执行即可。

     

    我们来看看完整的动画效果:

     

    2、把前一列单元格内容变成后一列批注

    把自身内容变成批注,实现是简单了些,但是实际应用场景就比较少了,可能我们更多的是希望把某一列内容变成另一列的批注。

     

    如上图我们希望把B列里的内容,变成C列的批注。

    其实有了前面的例子就很简单了,我们只需要修改少许代码即可。修改后的代码如下:

     

    Sub 添加前一列单元格内容为批注()
        Dim r As Range, rs As Range
        Set rs = Selection
        For Each r In rs
            If r.Value <> "" Then
                If Not r.Comment Is Nothing Then
                    r.Comment.Text Text:=r.Offset(0, -1).Value
                Else
                    r.AddComment r.Offset(0, -1).Value
                End If
            End If
        Next r
    End Sub

     

    其中r.Offset(0, -1).Value表示取同一行前一个单元格的值。

    操作过程跟上面方法一样,这里就不详细描述了,直接看动态图:

     

    当然这个方式感觉还是有点瑕疵,就是只能在代码里写死取哪一列的值,那么是否可以直接通过一个变量,输入哪一列就取哪一列呢?那是否可以通过自定义函数的形式实现呢?这两个问题就留给大家自己思考了。

    今天的分享到这里就结束了,但是学习的道路才刚刚开始,希望我们可以在学习的道路上不断地前进,坚持不懈。

    如果你有感兴趣的功能,可以告诉小编哦,小编会为你写一篇相应的文章。当然是先到先写哈,我会列一个计划表,尽量满足大家的需求,所以如果下一篇不是你要的文章,请不要着急,可能就在下下篇。记得告诉小编你想学习的功能哦。

    文章持续更新,可以微信搜索「 亦心Excel 」第一时间阅读,本文 GitHub https://github.com/hugogoos/Excel 已经收录,包含Excel系统学习指南系列文章,欢迎Star。

  • 相关阅读:
    【Android】详解Android 网络操作
    【Android】详解Android Service
    【Android】Android的进程优先级
    【Windows】Dos中的日期的和时间
    【Android】详解Android Activity
    【Java】java数据库连接中C3P、DBCP、Druid连接池的使用
    【Windows】Windows中解析DOS的DIR命令使用
    【Android】解析Android的路径
    【Windows】Windows中解析DOS的for命令使用
    【Android】Android实现监听返回键,主键(HOME),菜单键
  • 原文地址:https://www.cnblogs.com/hugogoos/p/14153560.html
Copyright © 2020-2023  润新知