Excel精英培训网

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

[已解决]请教各位老师 :费用平摊计算公式

[复制链接]
发表于 2015-5-10 12:27 | 显示全部楼层 |阅读模式
如何把当月公司费用平摊到当月项目费用,如果是其他忽略不计
比如
2014年1月  没有公司费用,那么所有项目费用(2个)保持一致
2014年8月份,公司费用10平均分摊到2种项目费用(袜子,电脑),袜子有2条记录在原来费用上增加 10/2/2=2.5,
2015年1月  项目费用数量1个(商品其它不分摊费用),鼠标有3条记录, 公司费用102/3 分别加到每条记录上
统计当月类别是项目费用+(当月公司费用/项目数量/相同项目记录的行数)

F列是统计的结果

谢谢大家了

最佳答案
2015-5-10 15:33
本帖最后由 xdragon 于 2015-5-10 15:34 编辑

=IF((C2="其他")+(D2="公司费用"),"",E2+SUMPRODUCT((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(D$2:D$13="公司费用")*E$2:E$13)/SUMPRODUCT((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(C$2:C$13=C2))/COUNT(0/((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(C$2:C$13<>"其他")*(D$2:D$13<>"公司费用")*FREQUENCY(ROW($1:$12),MATCH(TEXT(A$2:A$13,"emm")&C$2:C$13,TEXT(A$2:A$13,"emm")&C$2:C$13,))^0)))

要函数的话,写的有点长
103823j4l7pzx6nq5000tf.png

费用.rar

11.72 KB, 下载次数: 11

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-5-10 13:59 | 显示全部楼层
  1. Sub test()
  2.     Dim rawdata, i As Long, d As Object, d1 As Object
  3.     Dim re(), ym As String, ymPro As String
  4.     Set d = CreateObject("scripting.dictionary"): Set d1 = CreateObject("scripting.dictionary")
  5.     rawdata = Sheets("费用").Range("A1").CurrentRegion.Value
  6.     ReDim re(1 To UBound(rawdata), 1 To 1)
  7.     re(1, 1) = "平摊费用"
  8.     For i = 2 To UBound(rawdata)
  9.         ym = Format(rawdata(i, 1), "yyyymm")
  10.         If rawdata(i, 4) <> "公司费用" And rawdata(i, 3) <> "其他" Then
  11.             ymPro = ym & rawdata(i, 3)
  12.             If Not d.exists(ymPro) Then d1(ym) = d1(ym) + 1
  13.             d(ym & rawdata(i, 3)) = d(ym & rawdata(i, 3)) + 1
  14.         Else
  15.             d(ym) = rawdata(i, 5)
  16.         End If
  17.     Next
  18.     For i = 2 To UBound(rawdata)
  19.         ym = Format(rawdata(i, 1), "yyyymm")
  20.         If rawdata(i, 4) <> "公司费用" And rawdata(i, 3) <> "其他" Then
  21.             If d.exists(ym) Then
  22.                 re(i, 1) = rawdata(i, 5) + d(ym) / d1(ym) / d(ym & rawdata(i, 3))
  23.             Else
  24.                 re(i, 1) = rawdata(i, 5)
  25.             End If
  26.         End If
  27.     Next
  28.     Range("F1").Resize(UBound(re)) = re
  29. End Sub
复制代码

费用.rar

24.59 KB, 下载次数: 4

回复

使用道具 举报

发表于 2015-5-10 14:20 | 显示全部楼层
顶一下~~   绕好久都没绕粗来 ~ 期待函数版~{:2912:}
回复

使用道具 举报

 楼主| 发表于 2015-5-10 14:47 | 显示全部楼层
xdragon 发表于 2015-5-10 13:59

谢谢学委  

好厉害的程序,先收下了
回复

使用道具 举报

 楼主| 发表于 2015-5-10 14:47 | 显示全部楼层
李建军 发表于 2015-5-10 14:20
顶一下~~   绕好久都没绕粗来 ~ 期待函数版~

又见面了  
回复

使用道具 举报

发表于 2015-5-10 14:50 | 显示全部楼层
cndelme 发表于 2015-5-10 14:47
又见面了

哈哈 等礼拜一 老师们都上班了 就好好了 我也学习下~
回复

使用道具 举报

发表于 2015-5-10 15:33 | 显示全部楼层    本楼为最佳答案   
本帖最后由 xdragon 于 2015-5-10 15:34 编辑

=IF((C2="其他")+(D2="公司费用"),"",E2+SUMPRODUCT((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(D$2:D$13="公司费用")*E$2:E$13)/SUMPRODUCT((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(C$2:C$13=C2))/COUNT(0/((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(C$2:C$13<>"其他")*(D$2:D$13<>"公司费用")*FREQUENCY(ROW($1:$12),MATCH(TEXT(A$2:A$13,"emm")&C$2:C$13,TEXT(A$2:A$13,"emm")&C$2:C$13,))^0)))

要函数的话,写的有点长

费用.rar

25.33 KB, 下载次数: 7

评分

参与人数 2 +5 收起 理由
李建军 + 4 很给力!
cndelme + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-5-10 18:51 | 显示全部楼层
xdragon 发表于 2015-5-10 15:33
=IF((C2="其他")+(D2="公司费用"),"",E2+SUMPRODUCT((TEXT(A2,"emm")=TEXT(A$2:A$13,"emm"))*(D$2:D$13="公 ...

好厉害的公式  谢谢 老师

还想请教一个问题,如果改成 ROW($1:1) 结果好像也一样,可以这样改吗
Capture.PNG

点评

这是不可以的,不信你可以把第六行的公司费用和第五行的对调一下看看。  发表于 2015-5-10 20:19
回复

使用道具 举报

 楼主| 发表于 2015-5-10 21:24 | 显示全部楼层
本帖最后由 cndelme 于 2015-5-10 21:27 编辑
cndelme 发表于 2015-5-10 18:51
好厉害的公式  谢谢 老师

还想请教一个问题,如果改成 ROW($1:1) 结果好像也一样,可以这样改吗

老师 再麻烦解答一下

第5,6对换 数值是不对了,为什么会有错呢

如果1000行的数据 ROW($1:1000)  ?对吗
回复

使用道具 举报

发表于 2015-5-10 23:21 | 显示全部楼层
嗯,对的。不能少,少了会有错误。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-13 13:27 , Processed in 0.395512 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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