ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 修改代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-9-16 13:38 | 显示全部楼层 |阅读模式
本帖最后由 ddz79101 于 2024-9-16 14:04 编辑

老师,有个表格,我希望转换成二维表,写有代码,但不成功。请老师帮忙看看。谢谢

透视表.zip

11.28 KB, 下载次数: 6

TA的精华主题

TA的得分主题

发表于 2024-9-16 13:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
数据透视表10秒搞定!

修改代码 (1).zip

15.43 KB, 下载次数: 5

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-16 14:06 | 显示全部楼层
jaxxcyh 发表于 2024-9-16 13:46
数据透视表10秒搞定!

谢谢老师!发错了,看这附件。上面1楼附件也已重发.老师我希望用代码。谢谢

透视表.zip

11.28 KB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-9-16 14:27 | 显示全部楼层
ddz79101 发表于 2024-9-16 14:06
谢谢老师!发错了,看这附件。上面1楼附件也已重发.老师我希望用代码。谢谢

怎么没有反应。老师们看看

TA的精华主题

TA的得分主题

发表于 2024-9-16 14:57 | 显示全部楼层
  1. Sub 下棋法之数据透视表式汇总()
  2. Dim d As New Dictionary
  3. Dim 棋盘(1 To 10000, 1 To 8)    '加个合计列
  4. Dim 行数, 列数
  5. Dim arr, x, k
  6. arr = Range("A2:C" & Range("C65536").End(xlUp).Row)
  7. For x = 1 To UBound(arr)
  8.     列数 = Left(arr(x, 2), 1) + 1     '获取月份转化为列数
  9.     If d.Exists(arr(x, 1)) Then
  10.         行数 = d(arr(x, 1))            '从字典里取出产品类别对应的行数
  11.         棋盘(行数, 列数) = 棋盘(行数, 列数) + arr(x, 3)   '同时汇总此月份费用
  12.     Else
  13.         k = k + 1                     '依次向字典里存储产品类别对应的行数,A-1,B-2,C-3,...
  14.         d(arr(x, 1)) = k
  15.         棋盘(k, 1) = arr(x, 1)        '填入产品类别
  16.         棋盘(k, 列数) = arr(x, 3)     '填入第一个费用(后续在此基础上累加)
  17.     End If
  18. Next x

  19. For i = 1 To d.Count + 1
  20.     For j = 2 To UBound(棋盘, 2) - 1
  21.         棋盘(i, 8) = 棋盘(i, 8) + 棋盘(i, j)
  22.         If i <> d.Count + 1 Then 棋盘(d.Count + 1, j) = 棋盘(d.Count + 1, j) + 棋盘(i, j)
  23.     Next
  24. Next
  25.    
  26. 棋盘(d.Count + 1, 1) = "总计"
  27. Range("F2").Resize(k + 1, 8) = 棋盘

  28. End Sub

复制代码

数据透视表式汇总.zip

28.01 KB, 下载次数: 3

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-16 15:48 | 显示全部楼层
Option Explicit
Sub TEST6()
    Dim ar, br, i&, j&, r&, c&, dic As Object, iPosRow&, iPosCol&
   
    Application.ScreenUpdating = False
    Set dic = CreateObject("Scripting.Dictionary")
   
    ar = [A1].CurrentRegion.Value
    ReDim br(1 To UBound(ar), 1 To UBound(ar) + 1)
    br(1, 1) = "序号": br(1, 2) = "姓名"
    r = 1: c = 2
   
    For i = 2 To UBound(ar)
        If Not dic.Exists(ar(i, 2)) Then
            r = r + 1
            br(r, 1) = r - 1
            br(r, 2) = ar(i, 2)
            dic(br(r, 2)) = r
        End If
        If Not dic.Exists(ar(i, 3)) Then
            c = c + 1
            br(1, c) = ar(i, 3)
            dic(br(1, c)) = c
        End If
        iPosRow = dic(ar(i, 2)): iPosCol = dic(ar(i, 3))
        br(iPosRow, iPosCol) = ar(i, 4)
    Next i
   
    [H1].CurrentRegion.Clear
    With [H1].Resize(r, c)
       .Value = br
       .Borders.LineStyle = xlContinuous
        .EntireColumn.AutoFit
    End With
    Set dic = Nothing
    Application.ScreenUpdating = True
    Beep
End Sub

TA的精华主题

TA的得分主题

发表于 2024-9-16 15:48 | 显示全部楼层
。。。。。。。。。。。。。

透视表.rar

13.82 KB, 下载次数: 5

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-16 16:21 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 ykcbf1100 于 2024-9-16 16:22 编辑

全表自动生成,字典+数组

6fcfc55a-7769-48f5-96d0-3fe3be63af0d.png

透视表.zip

19.26 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-9-16 16:21 | 显示全部楼层
全表自动生成

  1. Sub ykcbf()   '//2024.9.16
  2.     Application.ScreenUpdating = False
  3.     Application.DisplayAlerts = False
  4.     Set d = CreateObject("Scripting.Dictionary")
  5.     ReDim brr(1 To 10000, 1 To 100)
  6.     m = 1: n = 2
  7.     On Error Resume Next
  8.     With Sheets("Sheet1")
  9.         r = .Cells(Rows.Count, 1).End(3).Row
  10.         arr = .[a1].Resize(r, 4)
  11.     End With
  12.      brr(1, 1) = arr(1, 1): brr(1, 2) = arr(1, 2)
  13.     For i = 2 To UBound(arr)
  14.         s = arr(i, 2)
  15.         If Not d.Exists(s) Then
  16.             m = m + 1
  17.             d(s) = m
  18.             brr(m, 1) = m - 1
  19.             brr(m, 2) = s
  20.         End If
  21.         r = d(arr(i, 2))
  22.         s = arr(i, 3)
  23.         If Not d.Exists(s) Then
  24.             n = n + 1
  25.             d(s) = n
  26.             brr(1, n) = s
  27.         End If
  28.         c = d(arr(i, 3))
  29.         brr(r, c) = brr(r, c) + arr(i, 4)
  30.     Next
  31.     With Sheets("Sheet2")
  32.         .UsedRange.Clear
  33.         .Cells.Interior.ColorIndex = 0
  34.         .[a1].Resize(1, n).Interior.Color = 49407
  35.         .[a2].Resize(m - 1, 1).Interior.Color = 5296274
  36.         With .[a1].Resize(m, n)
  37.             .Value = brr
  38.             .Borders.LineStyle = 1
  39.             .HorizontalAlignment = xlCenter
  40.             .VerticalAlignment = xlCenter
  41.             With .Font
  42.                 .Name = "微软雅黑"
  43.                 .Size = 11
  44.             End With
  45.         End With
  46.     End With
  47.     Application.ScreenUpdating = True
  48.     MsgBox "OK!"
  49. End Sub
复制代码


TA的精华主题

TA的得分主题

发表于 2024-9-16 16:32 | 显示全部楼层
ddz79101 发表于 2024-9-16 14:06
谢谢老师!发错了,看这附件。上面1楼附件也已重发.老师我希望用代码。谢谢
  1. Sub 汇总()
  2.     Dim d As New Dictionary
  3.     Dim brr(1 To 10000, 1 To 5)
  4.     Dim Brow, Bcol
  5.     Dim arr, x, k
  6.     arr = Range("a2:d" & Range("a65536").End(xlUp).Row)
  7.     For x = 1 To UBound(arr)
  8.         Bcol = (InStr("语文数学英语", arr(x, 3)) + 1) / 2 + 2   '获取学科应从arr第3列获取而不是第2列
  9.         If d.Exists(arr(x, 2)) Then
  10.             Brow = d(arr(x, 2))
  11.             brr(Brow, Bcol) = brr(Brow, Bcol) + arr(x, 4)
  12.         Else
  13.             k = k + 1
  14.             d(arr(x, 2)) = k
  15.             brr(k, 2) = arr(x, 2)
  16.             brr(k, Bcol) = arr(x, 4)
  17.         End If
  18.         brr(k, 1) = k   '添加序号
  19.     Next x
  20.    
  21.     Range("f2").Resize(k, 5) = brr
  22. End Sub
复制代码

评分

1

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-19 01:22 , Processed in 0.046111 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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