智能计算混合录入中的数字

数字办公

韩雪:有一次我在用Excel汇总数据时发现,某些列中的数据既有单个数字,又有几个数字相加的公式,甚至还有文字跟数字混合录入的情况,用系统自带的函数根本无法统计这些列。请问《电脑报》的专家,怎么才能在Excel中统计这种复杂的列?

办公专家陈邓新:这个朋友的问题是很多读者都碰到过的,通常都是手工计算后再将结果填到相应的单元格中,非常不方便。其实说到底,这个问题就是如何让Excel自动识别单元格的数字并将这些数字进行累加的问题,我们可以通过编写一个自定义函数来解决它。

按组合键“Alt+F11”打开VBA编辑器,在当前的工作簿中插入一个模块,在模块中定义一个名为CountNum的自定义函数(下载地址:http://download.cpcw.com),函数的关键代码解释如下:

Function CountNum(rng As Range)

Dim I%

设定循环的次数(单元格字符的长度)

For I = 1 To VBA.Len(rng)

逐个字符提取判断是否数字

If Mid(rng, I, 1) Like “[0-9]” Then

将提取的连续数字进行累加

CountNum = CountNum + Val(Mid(rng, I, Len(rng)))

数字在单元格的起始位(即从第几位开始提取)

关闭代码窗口返回到Excel工作表中,在需要统计的列的右侧添加一个辅助列(见图),输入公式“=countnum(A1)”(假设A列为需要统计的列)后,按回车键就可以看到A1单元格的所有数字之和了。

14-f12-2-1.jpg

如果想在所有的工作簿中使用该自定义函数,必须将该函数的代码放到个人宏工作簿中,方法是在VBA编辑器中将该自定义函数的代码复制到个人宏工作簿的模块中。

小提示:个人宏工作簿(PERSONAL.XLS)是Excel程序自带的工作簿文件,它是一个隐藏的文件,加载Excel程序时会自动打开它。用户可将自定义的宏或录制的宏代码保存在该文档中。