ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 直改横

[复制链接]

TA的精华主题

TA的得分主题

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

老师!你这透视表中单号列,应该包含日期和单号。我现在临阵擦枪,再看透视表的知识

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 17:19 | 显示全部楼层
cjc209 发表于 2023-2-24 17:00
Sub 数据透视表vba法()
    Set 数据源区 = Sheet1.Range("A1").CurrentRegion
    Set 结果起始单元格 = ...

你真快呀!就这么会!我试试看

TA的精华主题

TA的得分主题

发表于 2023-2-24 17:20 | 显示全部楼层
xing_chen 发表于 2023-2-24 17:17
老师!你这透视表中单号列,应该包含日期和单号。我现在临阵擦枪,再看透视表的知识

什么意思?  

TA的精华主题

TA的得分主题

发表于 2023-2-24 17:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
xing_chen 发表于 2023-2-24 17:17
老师!你这透视表中单号列,应该包含日期和单号。我现在临阵擦枪,再看透视表的知识

看懂了 要这样就要构筑一列辅助列才能使用

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 17:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

我的意思是你透视表和代码,写的快,效率太高了。

TA的精华主题

TA的得分主题

发表于 2023-2-24 18:07 | 显示全部楼层
这样就达到你的奇葩要求了
Sub 数据透视表vba法()
   Dim arr
     Application.ScreenUpdating = False
    For i = 1 To Range("a" & Rows.Count).End(xlUp).Row
        Sheet1.Cells(i, 5) = Cells(i, 1) & " " & Cells(i, 2)
    Next
    Set 数据源区 = Sheet1.Range("A1").CurrentRegion
    Set 结果起始单元格 = Sheet1.Range("h1")
    arr = 数据源区 '原始数据区
    ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1)

    行字段数组 = Array(arr(1, 3), arr(1, 5))
    列字段数组 = 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))
    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
    Sheet1.Columns(5).Clear
    结果起始单元格.Resize(UBound(brr), UBound(brr, 2)) = brr
    结果起始单元格.CurrentRegion.Borders.LineStyle = 1
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub

TA的精华主题

TA的得分主题

发表于 2023-2-24 18:11 | 显示全部楼层
xing_chen 发表于 2023-2-24 17:34
我的意思是你透视表和代码,写的快,效率太高了。

数据透视表调用内存代码是模板式的 我存好了的 只是敲几个拼音代码 就会出来写好了的通用代码 根本不用去写
只是根据具体要求做小修改 和参数设置就好了 所以快 要善于收集通用代码 用时随手拿来就是秒秒钟之事

TA的精华主题

TA的得分主题

发表于 2023-2-24 18:12 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不然写代码非常耗时 还要调试

TA的精华主题

TA的得分主题

发表于 2023-2-24 18:16 | 显示全部楼层
ReDim Preserve arr(1 To UBound(arr), 1 To UBound(arr, 2) + 1) 这一句注释掉 没有用

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2023-2-24 19:23 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-30 02:11 , Processed in 0.045361 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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