关于求和,有很多种,一般情况我们经常用的求和方式是:直接求和,单条件求和,多条件求和,今天EXCEL中国合伙人教你不一样的求和,让你工作越来越轻松,下面先看一下我们的效果图 以下图是知道供应商全称数据,现要用简称在全称里面进行查找符合称称的项,并累加起来,如下图:
在介绍前,先了解一下ISNUMBER函数,此函数对单元格进行判断是不是数值函数,即:值为数字。利用此函数的此特性对简称,全称作判断单元格是否为数值,如果是则返回TRUE,如果不是则返回FALSE 在了解一下FIND函数,即判断位置函数, FIND 函数语法具有下列参数:
先介绍简称在全称里取数累加 方法一:在单元格E3单元格输入公式: {=SUM(ISNUMBER(FIND(D3,$A$3:$A$26))*$B$3:$B$26)} 数公式为数组公式,输入完成后按CTRL SHIFT 回车, 注:大括号不是输上去的,而是按三键后自动出来的 方法二:在单元格F3输入如下公式(土豆哥版) =SUMIF(A:A,'*'&D3&'*',B:B) 此公式利用通配符“*”与简称连接后对单元格进行求和,通配符“*”代表所有字符,在这里与简称连接后是代表简称两边的所有字数。输入完以上公式后将得出以下结果图: 下面介绍下全称在简称中进行查找并累加 方法一:在单元格L3输入如下公式: { =SUM(ISNUMBER(FIND($H$3:$H$26,K3))*$I$3:$I$26)} 刚好与前面的相反,效果一样,这就不解释了, 方法二:利用VBA代码进行查找累加(土豆哥版) 代码如下: Sub Test() '数据简,求和全,代码 过程名称 Test Sub 和 () 是固定语法 Dim X As Integer, Rng As Range '声明变量 X 为 整形变量,Rng 为 单元格对象变量 For X = 2 To 25 '循环 x 从 2 到 25 Set Rng = Range('K:K').Find(Cells(X, 'H'), , , xlPart) '给对象变量赋值必须用 Set 'Find 函数返回 Range 类型的值 '在 K 列中查找(find)单元格 Cells(X, 'H') 的值,,,xlpart(不完全匹配) '总结:在K列中模糊查找 H列 X 行的值,并赋值给 Rng If Not Rng Is Nothing Then '如果 rng 是 什么都没有 就 Cells(Rng.Row, 'M') = Cells(Rng.Row, 'M') Cells(X, 'I') '单元格 内部 颜色号 =3 PS:给单元格填充红色 Else '否则 Cells(X, 'H').Interior.ColorIndex = 3 '单元格(找到的行,M列)=单元格(找到的行,M列) 加 单元格(X行,I列) '数据累加 End If Next End Sub '是对应块语句所必须的结束语句 输入公式和运行程序后,得到如下效果图。 大功告成,动手试试吧, 时时观注EXCEL中国合伙人,每天精彩不断,请听下回分解,谢谢。 |
|