ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2367|回复: 28

[求助] 直改横

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-24 16:37 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
老师,有表,需将原日期直排的金额重按照横排的月份归类填写。敬请老师赐教。谢谢!

直改横.rar

114.58 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2023-2-24 16:47 | 显示全部楼层
数据透视表 应该可以吗?

TA的精华主题

TA的得分主题

发表于 2023-2-24 16:48 | 显示全部楼层
快下班了,让别的老师来吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 16:49 | 显示全部楼层
cjc209 发表于 2023-2-24 16:47
数据透视表 应该可以吗?

可以呀!不过我不熟悉透视表,但我希望用代码写成的,老师可以帮忙吗?

TA的精华主题

TA的得分主题

发表于 2023-2-24 16:50 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-2-24 16:51 | 显示全部楼层
xing_chen 发表于 2023-2-24 16:49
可以呀!不过我不熟悉透视表,但我希望用代码写成的,老师可以帮忙吗?

可以啊 也很简单

TA的精华主题

TA的得分主题

发表于 2023-2-24 17:00 | 显示全部楼层
Sub 数据透视表vba法()
    Set 数据源区 = Sheet1.Range("A1").CurrentRegion
    Set 结果起始单元格 = Sheet1.Range("h1")
    arr = 数据源区 '原始数据区
   
    行字段数组 = Array(arr(1, 3), arr(1, 2))
    列字段数组 = Array(arr(1, 1)) 'Array(arr(1, 3), arr(1, 6))  非数组都视为没有列字段
    值字段数组 = Array(arr(1, 4))
    汇总函数数组 = Array(xlSum) '一定要与值字段相匹配
    横向分类汇总 = False 'True 或者 1 开启分类汇总合计 False 或者 0 不开启
    纵向分类汇总 = 1 'True 或者 1 开启分类汇总合计 False 或者 0 不开启
    横向总合计 = 1 'False 或者 0 不要行方向合计 True 或者 1 为开启合计
    纵向总合计 = 1 'False 或者 0 不要列方向合计 True 或者 1 为开启合计
    重复标签 = 1 'False 或者 0 不重复标签 True 或者 1 为开启重复标签
   
   
    Application.DisplayAlerts = False
    Set 缓存 = ThisWorkbook.PivotCaches.Create(xlDatabase, 数据源区.Address(External:=True))
    '在H1单元格做透视表
    Set Pi = 缓存.CreatePivotTable(结果起始单元格)
    With Pi
        If IsArray(列字段数组) Then
            .AddFields RowFields:=行字段数组, ColumnFields:=列字段数组 'RowFields行字段 ColumnFields列字段 PageFields筛选字段
        Else
            .AddFields RowFields:=行字段数组
        End If
        For i = 0 To UBound(值字段数组)
            .AddDataField .PivotFields(值字段数组(i)), , 汇总函数数组(i) '求值
        Next
        '显示透视表的形式
        '        .RowAxisLayout xlOutlineRo '大纲型
        .RowAxisLayout xlTabularRow '表格型
        If 重复标签 Then
            .RepeatAllLabels xlRepeatLabels
        End If
        .RowGrand = 横向总合计 '不要行方向合计
        .ColumnGrand = 纵向总合计 '不要列方向合计
        If IsArray(行字段数组) Then
            For i = 0 To UBound(行字段数组) - 1
                .PivotFields(行字段数组(i)).Subtotals(1) = 纵向分类汇总
            Next
        End If
        If IsArray(列字段数组) Then
            For i = 0 To UBound(列字段数组) - 1
                .PivotFields(列字段数组(i)).Subtotals(1) = 横向分类汇总
            Next
        End If
    End With
    brr = 结果起始单元格.CurrentRegion
    结果起始单元格.CurrentRegion.Clear
    结果起始单元格.Resize(UBound(brr), UBound(brr, 2)) = brr
    结果起始单元格.CurrentRegion.Borders.LineStyle = 1
    Application.DisplayAlerts = True
End Sub

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-24 17:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这是通用型的 只是按需求修改参数就行了 主体不动

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 17:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
ykcbf1100 发表于 2023-2-24 16:48
快下班了,让别的老师来吧。

谢谢!下班了!可以放松啦!周末快乐

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 17:04 | 显示全部楼层
cjc209 发表于 2023-2-24 16:51
可以啊 也很简单

谢谢老师!我学习一下透视表!可以帮忙写个代码吗!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-30 00:18 , Processed in 0.048006 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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