Excel精英培训网

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

[已解决]能否把所有O列为打勾的工作表名(括号内的名字)填到浅绿色区域的相应表格

[复制链接]
发表于 2014-10-30 16:52 | 显示全部楼层 |阅读模式
求助1:能否把所有工作表的数合计汇总到黄色区域。谢谢

求助2:能否把所有O列为打勾的工作表名(括号内的名字)填到浅绿色区域的相应表格。例如:O19和O22单元格

求助.zip (22.89 KB, 下载次数: 4)
发表于 2014-10-30 17:02 | 显示全部楼层
F4公式,横拉、下拉;
=SUM('2014年8月(江南市):2014年8月(朱海县)'!F4)

M列 =SUM(F4:L6)

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 谢谢你

查看全部评分

回复

使用道具 举报

发表于 2014-10-30 17:46 | 显示全部楼层
表格联系人改为身份证号码比较好,这样容易重名。
回复

使用道具 举报

 楼主| 发表于 2014-10-30 17:54 | 显示全部楼层
dsmch 发表于 2014-10-30 17:46
表格联系人改为身份证号码比较好,这样容易重名。

呵呵!谢谢提醒
回复

使用道具 举报

发表于 2014-10-30 18:29 | 显示全部楼层    本楼为最佳答案   
  1. Sub Macro1()
  2. Dim arr, brr, crr, d, i%, j&, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. brr = Range("a3").CurrentRegion
  5. ReDim crr(1 To UBound(brr) - 2, 1 To 7)
  6. For i = 1 To Sheets.Count - 1
  7.     arr = Sheets(i).Range("a1").CurrentRegion
  8.     For j = 4 To UBound(arr) - 1
  9.         If arr(j, 2) = "" Then arr(j, 2) = arr(j - 1, 2)
  10.         If arr(j, 4) = "" Then arr(j, 4) = arr(j - 1, 4)
  11.         zf = arr(j, 2) & "," & arr(j, 4) & "," & arr(j, 5)
  12.         For k = 6 To 12
  13.             d(zf & "," & arr(3, k)) = d(zf & "," & arr(3, k)) + arr(j, k)
  14.         Next
  15.     Next
  16. Next
  17. For j = 2 To UBound(brr) - 1
  18.     If brr(j, 2) = "" Then brr(j, 2) = brr(j - 1, 2)
  19.     If brr(j, 4) = "" Then brr(j, 4) = brr(j - 1, 4)
  20.     zf = brr(j, 2) & "," & brr(j, 4) & "," & brr(j, 5)
  21.     For k = 6 To 12
  22.         crr(j - 1, k - 5) = d(zf & "," & brr(1, k))
  23.     Next
  24. Next
  25. Range("f4").Resize(UBound(crr), UBound(crr, 2)) = crr
  26. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!

查看全部评分

回复

使用道具 举报

发表于 2014-10-30 18:30 | 显示全部楼层
………………

求助.zip

24.37 KB, 下载次数: 17

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-10-30 19:41 | 显示全部楼层
dsmch 发表于 2014-10-30 18:29

好像第二个问题没有做到?
能否把所有O列为打勾的工作表名(括号内的名字)填到浅绿色区域的相应表格
回复

使用道具 举报

发表于 2014-10-30 20:31 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, crr, d, i%, j&, k%
  3. Set d = CreateObject("scripting.dictionary")
  4. brr = Range("a3").CurrentRegion
  5. ReDim crr(1 To UBound(brr) - 2, 1 To 8)
  6. For i = 1 To Sheets.Count - 1
  7.     dgb = Split(Sheets(i).Name, "(")(1)
  8.     dm = Left(dgb, Len(dgb) - 1)
  9.     arr = Sheets(i).Range("a1").CurrentRegion
  10.     For j = 4 To UBound(arr) - 1
  11.         If arr(j, 2) = "" Then arr(j, 2) = arr(j - 1, 2)
  12.         If arr(j, 4) = "" Then arr(j, 4) = arr(j - 1, 4)
  13.         zf = arr(j, 2) & "," & arr(j, 4) & "," & arr(j, 5)
  14.         For k = 6 To 12
  15.             d(zf & "," & arr(3, k)) = d(zf & "," & arr(3, k)) + arr(j, k)
  16.         Next
  17.         If arr(j, 15) = "√" Then
  18.             zf2 = zf & "," & "打勾"
  19.             If Not d.exists(zf2) Then d(zf2) = dm Else d(zf2) = d(zf2) & ";" & dm
  20.         End If
  21.     Next
  22. Next
  23. For j = 2 To UBound(brr) - 1
  24.     If brr(j, 2) = "" Then brr(j, 2) = brr(j - 1, 2)
  25.     If brr(j, 4) = "" Then brr(j, 4) = brr(j - 1, 4)
  26.     zf = brr(j, 2) & "," & brr(j, 4) & "," & brr(j, 5)
  27.     crr(j - 1, 8) = d(zf & "," & "打勾")
  28.     For k = 6 To 12
  29.         crr(j - 1, k - 5) = d(zf & "," & brr(1, k))
  30.     Next
  31. Next
  32. Range("f4").Resize(UBound(crr), 7) = crr
  33. Range("o4").Resize(UBound(crr)) = Application.Index(crr, 0, 8)
  34. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
qinhuan66 + 3 很给力!谢谢

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-10-31 10:18 | 显示全部楼层
dsmch 发表于 2014-10-30 20:31

你好老师!为什么我想生成到F至M列把For k = 6 To 12改成For k = 6 To 14还不行呢?谢谢

点评

用附件说明问题  发表于 2014-10-31 10:28
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 09:07 , Processed in 0.229324 second(s), 18 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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