Excel精英培训网

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

[已解决]双条件加总金额

[复制链接]
发表于 2017-5-31 20:27 | 显示全部楼层 |阅读模式


  如题,双条件加总金额,谢谢。

     附件:    456.zip (492.06 KB, 下载次数: 6)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-5-31 20:57 | 显示全部楼层
本帖最后由 小小菜鸟学EXCEL 于 2017-5-31 21:02 编辑

=SUMIF(明細!$B:$B,$B3,OFFSET(明細!$AH$1,,COLUMN(A1)))
一个SUMIF右拉下拉就完事儿了。也不会卡。干嘛一定要VBA呢?

评分

参与人数 1 +20 金币 +20 收起 理由
望帝春心 + 20 + 20 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2017-5-31 22:53 | 显示全部楼层
小小菜鸟学EXCEL 发表于 2017-5-31 20:57
=SUMIF(明細!$B:$B,$B3,OFFSET(明細!$AH$1,,COLUMN(A1)))
一个SUMIF右拉下拉就完事儿了。也不会卡。干嘛一 ...

明细表数据有12万多行,只是论坛上传不了那么多,我删除了。
数据量太大,用公式真的很卡的。
回复

使用道具 举报

发表于 2017-6-1 10:08 | 显示全部楼层
本帖最后由 opelwang 于 2017-6-1 14:17 编辑


非常感謝,很好!
回复

使用道具 举报

发表于 2017-6-1 10:42 | 显示全部楼层
  1. Sub zz()
  2.     Dim d, arr, brr
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     arr = Sheets("明細").Range("A1:AT" & Sheets("明細").[b654321].End(3).Row)
  5.     For i = 4 To UBound(arr)
  6.         For j = 35 To 46
  7.             x = arr(i, 2) & arr(3, j)
  8.             d(x) = d(x) + arr(i, j)
  9.         Next
  10.     Next
  11.     With Sheets("金額分析")
  12.         .[C3:N32] = ""
  13.         brr = .Range("B2:O" & .[b65536].End(3).Row)
  14.         For i = 2 To UBound(brr)
  15.             For j = 2 To 13
  16.                 x = brr(i, 1) & brr(1, j)
  17.                 brr(i, j) = d(x)
  18.                 S = S + d(x)
  19.             Next
  20.             If S > 0 Then brr(i, j) = S: S = 0
  21.         Next
  22.         .Range("B2:O" & .[b65536].End(3).Row) = brr
  23.     End With
  24. End Sub
复制代码

456.rar

423.19 KB, 下载次数: 16

评分

参与人数 2 +4 收起 理由
yf_home + 1 很给力
opelwang + 3 赞一个

查看全部评分

回复

使用道具 举报

发表于 2017-6-1 15:05 | 显示全部楼层

如果我在32行,再加一個月份纍計,應該添加一句什麼代碼,請指點,謝謝!


回复

使用道具 举报

 楼主| 发表于 2017-6-1 16:31 | 显示全部楼层

同问6楼的问题,谢谢。
回复

使用道具 举报

发表于 2017-6-2 10:12 | 显示全部楼层    本楼为最佳答案   
按列汇总,先用公式,再转成数值。
  1. Sub zz()
  2.     Dim d, arr, brr
  3.     Set d = CreateObject("Scripting.Dictionary")
  4.     arr = Sheets("明細").Range("A1:AT" & Sheets("明細").[b654321].End(3).Row)
  5.     For i = 4 To UBound(arr)
  6.         For j = 35 To 46
  7.             x = arr(i, 2) & arr(3, j)
  8.             d(x) = d(x) + arr(i, j)
  9.         Next
  10.     Next
  11.     With Sheets("金額分析")
  12.         .[C3:N32] = ""
  13.         rmax = .[b65536].End(3).Row
  14.         brr = .Range("B2:O" & rmax)
  15.         For i = 2 To UBound(brr)
  16.             For j = 2 To 13
  17.                 x = brr(i, 1) & brr(1, j)
  18.                 brr(i, j) = d(x)
  19.                 S = S + d(x)
  20.             Next
  21.             If S > 0 Then brr(i, j) = S: S = 0
  22.         Next
  23.         .Range("B2:O" & .[b65536].End(3).Row) = brr
  24.         .Cells(rmax + 1, 2) = "合计"
  25.         .Cells(rmax + 1, 3).Resize(1, UBound(brr, 2) - 1).Formula = "=sum(r2c:r[-1]c)"   '按月用公式计算
  26.         .Cells(rmax + 1, 3).Resize(1, UBound(brr, 2) - 1) = .Cells(rmax + 1, 3).Resize(1, UBound(brr, 2) - 1).Value  '公式换成数值
  27.     End With
  28. End Sub
复制代码

评分

参与人数 1 +1 收起 理由
yf_home + 1 赞一个

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 16:25 , Processed in 0.319530 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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