Excel精英培训网

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

[已解决]自动统计累计占比数据并写入汇总表问题

[复制链接]
发表于 2014-6-19 16:23 | 显示全部楼层 |阅读模式
本帖最后由 sdwffw 于 2014-6-19 20:39 编辑

Book1.zip (4.05 KB, 下载次数: 27)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2014-6-19 16:46 | 显示全部楼层
本帖最后由 sdwffw 于 2014-6-19 16:56 编辑

Book2.zip (4.2 KB, 下载次数: 24)
回复

使用道具 举报

发表于 2014-6-19 17:03 | 显示全部楼层
本帖最后由 江河行地 于 2014-6-19 17:06 编辑

=VLOOKUP($B2,INDIRECT(E$1&"!B2:C30"),2,)
下拉 右拉
回复

使用道具 举报

 楼主| 发表于 2014-6-19 17:08 | 显示全部楼层
江河行地 发表于 2014-6-19 17:03
=VLOOKUP($B2,青州!B$2:C$30,2,)
=VLOOKUP($B2,诸城!B2:C30,2,)
=VLOOKUP($B2,寿光!B$2:C$30,2,)

想法是VBA编码解决提出的所有问题,同时,我的表可能还要增加若干个单位。老师的解答只是用函数解决了汇总表数据调入的问题,其它分表中的问题也没解决。谢谢老师
回复

使用道具 举报

发表于 2014-6-19 17:47 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, d, i&, j%, n&
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Sheets("汇总表").Range("a1").CurrentRegion
  5. ReDim brr(1 To UBound(arr) - 1, 1 To Sheets.Count - 1)
  6. For j = 1 To Sheets.Count
  7.     If Sheets(j).Name <> "汇总表" Then
  8.         Sheets(j).Activate
  9.         sht = Sheets(j).Name
  10.         ActiveSheet.UsedRange.Interior.ColorIndex = xlNone
  11.         n = Range("a65536").End(xlUp).Row - 1
  12.         [f1] = Application.Sum(Range("c2").Resize(n, 1))
  13.         [d2] = "=C2/$F$1"
  14.         With Range("d2").Resize(n, 1)
  15.             .NumberFormatLocal = "0.0%"
  16.             .FillDown
  17.             .Value = .Value
  18.         End With
  19.         [a1].Resize(n + 1, 4).Sort [d2], Order1:=xlDescending, Header:=xlGuess
  20.         h = 0
  21.         For i = 2 To n
  22.             zf = Cells(i, 1) & sht
  23.             h = h + Cells(i, 4)
  24.             If h < 0.75 And h > 0 Then d(zf) = Cells(i, 3) Else [a2].Resize(i - 1, 4).Interior.ColorIndex = 3: Exit For
  25.         Next
  26.     End If
  27.     [f1] = ""
  28. Next
  29. For i = 2 To UBound(arr)
  30.     For j = 3 To UBound(arr, 2)
  31.         zf = arr(i, 1) & arr(1, j)
  32.         brr(i - 1, j - 2) = d(zf)
  33.     Next
  34. Next
  35. Sheets("汇总表").Activate
  36. [c2].Resize(UBound(brr), UBound(brr, 2)) = brr
  37. End Sub
复制代码
回复

使用道具 举报

发表于 2014-6-19 17:50 | 显示全部楼层    本楼为最佳答案   
………………

Book1.zip

13 KB, 下载次数: 44

回复

使用道具 举报

 楼主| 发表于 2014-6-19 20:38 | 显示全部楼层
dsmch 发表于 2014-6-19 17:50
………………

非常感谢老师,问题完美解决!!不过,我改了改工作簿表名和表中的第一行内容,程序出错不能运行,不知何因,再麻烦老师看看。 复件 Book1.zip (10.89 KB, 下载次数: 7)
回复

使用道具 举报

 楼主| 发表于 2014-6-19 20:42 | 显示全部楼层
本帖最后由 sdwffw 于 2014-6-19 20:45 编辑

dsmch老师,因我还需按后面出问题的表格样式再统计数据,所以自己尝试修改了表名和第一行字段名称,但是出错了,提示:[f1] = Application.Sum(Range("c2").Resize(n, 1))代码有问题,因我VBA刚开始学,自己也没查明原因。第 一种表格样式非常完美!
回复

使用道具 举报

发表于 2014-6-19 22:07 | 显示全部楼层
Sub Macro1()
Dim arr, brr, d, i&, j%, n&
Set d = CreateObject("scripting.dictionary")
arr = Sheets("汇总表").Range("a1").CurrentRegion
ReDim brr(1 To UBound(arr) - 1, 1 To Sheets.Count - 1)
For j = 1 To Sheets.Count
    If Sheets(j).Name <> "汇总表" Then
        Sheets(j).Activate
        sht = Sheets(j).Name
        ActiveSheet.UsedRange.Interior.ColorIndex = xlNone
        n = Range("b65536").End(xlUp).Row - 1
        [f1] = Application.Sum(Range("c2").Resize(n, 1))
        [d2] = "=C2/$F$1"
        With Range("d2").Resize(n, 1)
            .NumberFormatLocal = "0.0%"
            .FillDown
            .Value = .Value
        End With
        [a1].Resize(n + 1, 4).Sort [d2], Order1:=xlDescending, Header:=xlGuess
        h = 0
        For i = 2 To n
            zf = Cells(i, 2) & sht
            h = h + Cells(i, 4)
            If h < 0.75 And h > 0 Then d(zf) = Cells(i, 3) Else [a2].Resize(i - 1, 4).Interior.ColorIndex = 3: Exit For
        Next
    End If
    [f1] = ""
Next
For i = 2 To UBound(arr)
    For j = 3 To UBound(arr, 2)
        zf = arr(i, 2) & arr(1, j)
        brr(i - 1, j - 2) = d(zf)
    Next
Next
Sheets("汇总表").Activate
[c2].Resize(UBound(brr), UBound(brr, 2)) = brr
End Sub
回复

使用道具 举报

 楼主| 发表于 2014-6-20 05:40 | 显示全部楼层
dsmch 发表于 2014-6-19 22:07
Sub Macro1()
Dim arr, brr, d, i&, j%, n&
Set d = CreateObject("scripting.dictionary")

明白了,原来是第一列未填数据的原因,谢谢老师。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 12:45 , Processed in 0.458586 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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