Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 3231|回复: 9

[已解决]多条件剔除重复并求和

[复制链接]
发表于 2017-11-2 09:26 | 显示全部楼层 |阅读模式
本帖最后由 好运来5599 于 2017-11-6 10:04 编辑

详见截图中的描述。
最佳答案
2017-11-2 10:26
自编函数FreeSum。
  1. Function FreeSum(条件, 求和区域 As Range)     '多条件剔除重复并求和
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Dim xrng As Range
  4.     For Each xrng In 求和区域
  5.         r = xrng.Row
  6.         If Val(Cells(r, 1)) = Val(条件) Then
  7.             X = xrng.Offset(, -1) & xrng.Value
  8.             If Not d.exists(X) Then
  9.                 s = s + xrng.Value
  10.                 d(X) = ""
  11.             End If
  12.         End If
  13.     Next
  14.     FreeSum = s
  15. End Function
复制代码
多条件剔除重复并求和1.JPG
多条件剔除重复并求和2.JPG

多条件剔除重复并求和.rar

24.81 KB, 下载次数: 7

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-11-2 10:26 | 显示全部楼层    本楼为最佳答案   
自编函数FreeSum。
  1. Function FreeSum(条件, 求和区域 As Range)     '多条件剔除重复并求和
  2.     Set d = CreateObject("scripting.dictionary")
  3.     Dim xrng As Range
  4.     For Each xrng In 求和区域
  5.         r = xrng.Row
  6.         If Val(Cells(r, 1)) = Val(条件) Then
  7.             X = xrng.Offset(, -1) & xrng.Value
  8.             If Not d.exists(X) Then
  9.                 s = s + xrng.Value
  10.                 d(X) = ""
  11.             End If
  12.         End If
  13.     Next
  14.     FreeSum = s
  15. End Function
复制代码

多条件剔除重复并求和.rar

27.06 KB, 下载次数: 19

回复

使用道具 举报

 楼主| 发表于 2017-11-3 08:33 | 显示全部楼层
grf1973 发表于 2017-11-2 10:26
自编函数FreeSum。

请问,这个自编函数FreeSum具体怎么用呢?
我按照  Function FreeSum(条件, 求和区域 As Range)  在表单中设成如下公式:
=FreeSum(AS4:AS32,AS33,BF4:BF32),但结果为 #NAME?
回复

使用道具 举报

发表于 2017-11-3 09:19 | 显示全部楼层
下面不是我做了个示例吗?条件只要取一个单元格就行了。
回复

使用道具 举报

发表于 2017-11-3 09:19 | 显示全部楼层
=FreeSum(AS33,BF4:BF32)    就行了吧
回复

使用道具 举报

 楼主| 发表于 2017-11-3 10:44 | 显示全部楼层
grf1973 发表于 2017-11-3 09:19
下面不是我做了个示例吗?条件只要取一个单元格就行了。

是,现在看到示例啦。
回复

使用道具 举报

 楼主| 发表于 2017-11-3 10:45 | 显示全部楼层
grf1973 发表于 2017-11-3 09:19
=FreeSum(AS33,BF4:BF32)    就行了吧

可以啦!
回复

使用道具 举报

 楼主| 发表于 2017-11-3 12:43 | 显示全部楼层

我把代码复制到表单中,在单元格中使用自编函数,可结果不对,什么原因?详见截图。
自编函数.jpg
回复

使用道具 举报

发表于 2017-11-6 10:34 | 显示全部楼层
自编函数要放在“模块”里才行
回复

使用道具 举报

 楼主| 发表于 2017-11-6 10:54 | 显示全部楼层
grf1973 发表于 2017-11-6 10:34
自编函数要放在“模块”里才行

你帮我自编的函数:=FreeSum(AS33,BF4:BF32)在工作表《成本分析》的“成本明细”中,不能根据参数的改变而即时自动变化结果。例:用该函数在BF33对“01”产品进行条件求和后,再到内部核价单BD5中改变税率,改了之后,BF33中值变成了“0”,未随参数的改变而改变计算结果,而是要在BF33中双击才可激活该函数重新计算,后面的BF63BF93BF123等所有用到该函数的,都需要一个一个去双击才可激活。
不知能否把该函数设置成自动重算?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-6 18:47 , Processed in 0.332271 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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