设为首页收藏本站|繁體中文

Excel 技巧网

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 3089|bwin官网地址: 7

[财会金融] 如何根据数据表将不同分级下的金额汇总到一起?

[复制链接]
发表于 2012-4-15 21:56:08 | 显示全部楼层 |阅读模式
  • 署名作者: Zaezhong
  • 版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
  • 本文来自:
  • 引用作品:
  • 适用版本: 2013 
  • 语言环境: 简体中文
  • 学习方法: 掌握Excel技巧的关键是动手操作 | 下载 ≠ 知识


  • 免费注册成为本站会员,享用更多功能,结识更多Office办公高手!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 Zaezhong 于 2012-4-15 21:57 编辑

    Q:需要将下面的数据区域表按照不同的分类级别汇总到一起?其中每个一级目录下方的分类数目是不同的。需要汇总后的效果和原始数据表,具体见下图,图片未设置格式对齐等。

    如何根据数据表将不同分级下的金额汇总到一起?

    如何根据数据表将不同分级下的金额汇总到一起?

    A:
    1. Sub test()
    2.     Dim arr(1 To 2, 1 To 6), brr(1 To 3, 1 To 6), crr(1 To 1, 1 To 6)
    3.     Dim T, N&, i%, j%, k%, X$
    4.     T = Sheets(1).[A1].CurrentRegion    'A1当前区域赋值给数组
    5.     Range("J2:O10").ClearContents   '清空原有数据结果
    6.     For N = 2 To UBound(T) - 1
    7.     If T(N, 1) Like "*:*" Then     '该部分主要是为了第14行,第15行出现两次一级目录时候出现的错误处理
    8.         X = Trim(T(N, 1))   '将一级目录赋值给一个变量
    9.     Else: X = X     '如果当前不是一级目录,那么将原来的一级目录赋值给变量,即不变
    10.     End If
    11.         If X = "库存现金:" Then    '如果一级目录是库存现金
    12.             If Trim(T(N + 1, 1)) Like "*人民币*" Then   '下面几行判断货币的类别
    13.                 k = 1
    14.             ElseIf Trim(T(N + 1, 1)) Like "*欧元*" Then
    15.                 k = 2
    16.             Else: GoTo 1    '都不满足的时候直接循环到下一行
    17.             End If
    18.                 For i = 1 To 6
    19.                     arr(k, i) = arr(k, i) + Val(T(N + 1, i + 1))    '使用Val是因为数据区域存在文本
    20.                 Next
    21.         ElseIf X = "银行存款:" Then    '如果一级目录是引号存款
    22.             Select Case Trim(Trim(T(N + 1, 1)))     '继续判断货币的类别
    23.                 Case "-人民币"
    24.                     j = 1
    25.                 Case "-美元"
    26.                     j = 2
    27.                 Case "-港币"
    28.                     j = 3
    29.             End Select
    30.             For i = 1 To 6
    31.                 brr(j, i) = brr(j, i) + Val(T(N + 1, i + 1))
    32.             Next
    33.         ElseIf X = "其他货币资金:" Then
    34.             For i = 1 To 6
    35.                 crr(1, i) = crr(1, i) + Val(T(N + 1, i + 1))
    36.             Next
    37.         End If
    38. 1:
    39.     Next
    40.     [J3].Resize(2, 6) = arr: [J6].Resize(3, 6) = brr: [J10].Resize(, 6) = crr   '结果写到单元格
    41.     Columns("J:O").AutoFit  '自动调整单元格列宽
    42. End Sub
    复制代码

    分级汇总.zip

    20.64 KB, 下载次数: 51, 下载积分: 消费券 -5 Ti币

    如何根据数据表将不同分级下的金额汇总到一起?

    头像被屏蔽
    发表于 2012-4-15 22:06:48 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    发表于 2013-12-27 17:55:12 | 显示全部楼层
    感谢分享
    bwin官网地址

    使用道具 举报

    发表于 2013-12-27 19:02:19 | 显示全部楼层

    感谢分享
    bwin官网地址

    使用道具 举报

    发表于 2014-1-10 08:31:47 | 显示全部楼层
    bwin官网地址

    使用道具 举报

    发表于 2015-11-20 11:56:23 | 显示全部楼层
    没用过,不太明白
    发表于 2017-8-28 17:25:35 | 显示全部楼层

    感谢分享
    bwin官网地址

    使用道具 举报

    发表于 2019-3-29 18:28:04 | 显示全部楼层
    #使用=SUMIF($A:$A,$I2,B:B),完美解决
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
    本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
    若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
    会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
    本站特聘法律顾问:沈学律师

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速bwin官网地址 返回顶部 返回列表