最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

excel, 熟悉了一般应用的函数,为何还有必要学vba

运维笔记admin67浏览0评论

excel, 熟悉了一般应用的函数,为何还有必要学vba

excel, 熟悉了一般应用的函数,为何还有必要学vba

背景:

1. win10, office 2016, hp Elitebook笔记本电脑 

2. 统计数量时,在sheet (工作表)页面使用函数 sum通过类似 sum(c6:c8) 进行求和,例子见图片或附件。即使使用 “数据透视表” 进行求和,依然不能把C7(例子数据,见下图) 中的数据有效识别为数字。
后续通过人工对比才发现,有一个单元格的数据没有被统计进去。因为结果被用来支付款项,造成给了一定的工作困难。

未被求和公式计算在内的单元格内容,疑似来自“复制”、“粘贴”的过程。原数据来自其它单位。   

问题:

某个单元格中的数据,sheet(工作表)界面中,未被求和公式计算在内。

解决办法:

建议1. 理论上可以逐个单元格进行格式检查,并通过重新设置合适单元格个时候,重新输入数据来清除潜在的、无法被(求和等)函数自动识别为数字的单元格数据。数字多时,效率很低 。  

建议2. 使用vba代码。同样使用函数,vba可以自动把储存在文本格式单元格中的数据识别为数字,而正确求和;即时在单元格中输入英文状态的前置 " ' "加数字的格式,比如 '10, vba求和公式还是可以识别为数字,而正确求和。  

建议2中的求和过程很简单。如果数据多,可以通过数组储存单元格内容后,再进行相关操作,不用频繁访问单元格,以提交效率。   

例子图片,左侧sheet界面,右侧vba编辑界面:

 

为了方便测试,vba代码贴在这里。没有在顶部“代码”项中找到合适的类型,直接复制。
 
Public Sub MySum()
    '功能:求和
    '说明:
    '      1. 能对不同单元格格式下的数字,求和
    '      2. 避免了用函数时无法识别类似文本格式下,单元格储存的数字
    
    
    Dim iLoop As Integer ' 如果行数太多,理论上可以设置为long
    Dim startRow As Integer
    Dim endRow As Integer
    Dim calcCol As String '储存求和列代号
    Dim total As Integer
    
    startRow = 6
    endRow = 8
    calcCol = "c"
    total = 0
    
    For iLoop = startRow To endRow
        total = total + Range(calcCol & iLoop)
    Next
    
    Range(calcCol & "10") = total
    
End Sub 

  

发布评论

评论列表(0)

  1. 暂无评论