ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

   
EH云课堂-专业的职场技能充电站 限时送,魔方网表将Excel变在线系统 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
Excel不给力? 何不试试FoxTable! Excel 2016函数公式学习大典 高效办公必会的Office实战技巧 免费下载Excel行业应用视频
300集Office 2010微视频教程 Tableau-数据可视化工具 精品推荐-800套精选PPT模板,点击获取 ExcelHome出品 - VBA代码宝免费下载
你的Excel 2010实战技巧学习锦囊 欲罢不能, 过目难忘的 Office 新界面 Excel VBA经典代码实践指南
查看: 341|回复: 8

[求助] 单元格内用逗号隔开的数字 求和方法

[复制链接]

TA的精华主题

TA的得分主题

发表于 2019-2-11 18:39 | 显示全部楼层 |阅读模式
本帖最后由 guoziang1989 于 2019-2-11 18:57 编辑

无标题.jpg
如图,通过自定义函数提取表内与王志兰对应的第三列数据,以逗号分隔,求使其相加求和的方法。
该自定义函数是我从网上找的,大侠们要是能改一下,直接在里面相加就好了,要是没有的话求一个能把单元格内求和的方法。


Function Nlookup(rg, rgs As Range, L As Integer, M As Integer)

Dim arr1, ARR2, 列数

Dim R, n, K, X, cc, sr As String

arr1 = rg.Value

ARR2 = rgs

If VBA.IsArray(arr1) Then

For Each R In arr1

If R <> "" Then

cc = cc & R

列数 = 列数 + 1

End If

Next R

Else

cc = arr1

End If

If M > 0 Then '非查找最后一个

For X = 1 To UBound(ARR2)

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

K = K + 1

If K = M Then

Nlookup = ARR2(X, L)

Exit Function

End If

End If

Next X

ElseIf M = -1 Then '查找所有值

For X = 1 To UBound(ARR2)

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

Nlookup = Nlookup & "," & ARR2(X, L)

End If

Next X

Nlookup = Right(Nlookup, Len(Nlookup) - 1)

Exit Function

Else '查找最后一个

For X = UBound(ARR2) To 1 Step -1

sr = ""

If 列数 > 1 Then

For q = 1 To 列数

sr = sr & ARR2(X, q)

Next q

Else

sr = ARR2(X, 1)

End If

If sr = cc Then

Nlookup = ARR2(X, L)

Exit Function

End If

Next X

End If

Nlookup = ""

End Function


示例.zip

17.13 KB, 下载次数: 5

表格演示

TA的精华主题

TA的得分主题

发表于 2019-2-11 18:47 | 显示全部楼层
如果1,3,4,7是从表格中合并而来,那可以在合并的同时把和就求了吧

TA的精华主题

TA的得分主题

发表于 2019-2-11 18:48 | 显示全部楼层
建议楼主上传模拟附件,结合附件说明下需求吧
便于大家解答

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-11 18:58 | 显示全部楼层
micch 发表于 2019-2-11 18:47
如果1,3,4,7是从表格中合并而来,那可以在合并的同时把和就求了吧

我不懂vba。。。。那个函数是网上找的

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-11 19:03 | 显示全部楼层
liulang0808 发表于 2019-2-11 18:48
建议楼主上传模拟附件,结合附件说明下需求吧
便于大家解答

以上传大侠

TA的精华主题

TA的得分主题

发表于 2019-2-11 19:05 | 显示全部楼层
guoziang1989 发表于 2019-2-11 18:58
我不懂vba。。。。那个函数是网上找的
  1. =SUMIF(A:A,E1,C:C)
复制代码


你这个有意思,是要求和不用sumif,用自定义函数?

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-11 19:13 | 显示全部楼层
micch 发表于 2019-2-11 19:05
你这个有意思,是要求和不用sumif,用自定义函数?

原来如此  多谢大哥

TA的精华主题

TA的得分主题

发表于 2019-2-11 19:15 | 显示全部楼层

看了附件,感觉楼主用sumif函数就可以吧
另外就是在保留楼主原函数的情况,增加一个新函数调用原函数
新函数如下:
Function New_Nlookup(rg, rgs As Range, L As Integer, M As Integer)
    str1 = Nlookup(rg, rgs, L, M)
    If Len(str1) = 0 Then
        New_Nlookup = 0
    Else
        New_Nlookup = Application.Evaluate(Join(Split(str1, ","), "+"))
    End If
End Function
供楼主参考。。。。。。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-2-12 07:00 | 显示全部楼层
liulang0808 发表于 2019-2-11 19:15
看了附件,感觉楼主用sumif函数就可以吧
另外就是在保留楼主原函数的情况,增加一个新函数调用原函数
...

感谢版主        ,问题解决
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

关注官方微信,高效办公专列,每天发车

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2019-4-25 04:01 , Processed in 1.111637 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Wooffice Inc.

   

沪公网安备 31011702000001号 沪ICP备11019229号

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:徐怀玉律师 李志群律师

快速回复 返回顶部 返回列表