Excel精英培训网

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

[已解决]请大师完善下代码,实现附件的要求,谢谢!

[复制链接]
发表于 2012-7-8 14:39 | 显示全部楼层 |阅读模式
请大师完善下代码,实现附件的要求,谢谢!



求助20120708.rar (36.55 KB, 下载次数: 18)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-7-8 15:08 | 显示全部楼层    本楼为最佳答案   
  1. Sub 房号汇总()
  2.     Dim Ar1, Arr11(), i%, D, M
  3.     Dim SD As Date
  4.     Set D = CreateObject("scripting.dictionary")
  5.     SD = Range("b1")

  6.     Ar1 = Sheets("记录表").[a1].CurrentRegion
  7.     For i = 2 To UBound(Ar1)
  8.         If Ar1(i, 1) = SD Then
  9.             If D.exists(Ar1(i, 2)) Then
  10.                 Arr11(2, D(Ar1(i, 2))) = Arr11(2, D(Ar1(i, 2))) + Ar1(i, 6)
  11.                 If Ar1(i, 4) <> "" Then Arr11(3, D(Ar1(i, 2))) = Ar1(i, 4)    '加这句
  12.             Else
  13.                 M = M + 1
  14.                 ReDim Preserve Arr11(1 To 3, 1 To M)   '这句原来的2改成3
  15.                 D(Ar1(i, 2)) = M
  16.                 Arr11(1, M) = Ar1(i, 2)
  17.                 Arr11(2, M) = Ar1(i, 6)
  18.                 If Ar1(i, 4) <> "" Then Arr11(3, M) = Ar1(i, 4)    '加这句
  19.             End If
  20.         End If
  21.     Next

  22.     Range("a3:c65536").ClearContents 'b改成c
  23.     [a3].Resize(UBound(Arr11, 2), UBound(Arr11)) = Application.Transpose(Arr11)
  24. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2012-7-9 12:48 | 显示全部楼层
hrpotter 发表于 2012-7-8 15:08

你好,结帐单号07-03-008中同一房号有两个服务员,如何才能全部显示?
也就是以后同一房号超过一个服务员的要全部显示,格式为“张三,李四“,谢谢!
回复

使用道具 举报

发表于 2012-7-9 12:59 | 显示全部楼层
cyb412204170 发表于 2012-7-9 12:48
你好,结帐单号07-03-008中同一房号有两个服务员,如何才能全部显示?
也就是以后同一房号超过一个服务员 ...

试试这个
  1. Sub 房号汇总()
  2.     Dim Ar1, Arr11(), i%, D, M
  3.     Dim SD As Date
  4.     Set D = CreateObject("scripting.dictionary")
  5.     SD = Range("b1")

  6.     Ar1 = Sheets("记录表").[a1].CurrentRegion
  7.     For i = 2 To UBound(Ar1)
  8.         If Ar1(i, 1) = SD Then
  9.             If D.exists(Ar1(i, 2)) Then
  10.                 Arr11(2, D(Ar1(i, 2))) = Arr11(2, D(Ar1(i, 2))) + Ar1(i, 6)
  11.                 If Ar1(i, 4) <> "" Then
  12.                     If Arr11(3, D(Ar1(i, 2))) = "" Then
  13.                         Arr11(3, D(Ar1(i, 2))) = Ar1(i, 4)
  14.                     Else
  15.                         Arr11(3, D(Ar1(i, 2))) = Arr11(3, D(Ar1(i, 2))) & "," & Ar1(i, 4)
  16.                     End If
  17.                 End If
  18.             Else
  19.                 M = M + 1
  20.                 ReDim Preserve Arr11(1 To 3, 1 To M)   '这句原来的2改成3
  21.                 D(Ar1(i, 2)) = M
  22.                 Arr11(1, M) = Ar1(i, 2)
  23.                 Arr11(2, M) = Ar1(i, 6)
  24.                 If Ar1(i, 4) <> "" Then Arr11(3, M) = Ar1(i, 4)    '加这句
  25.             End If
  26.         End If
  27.     Next

  28.     Range("a3:c65536").ClearContents    'b改成c
  29.     [a3].Resize(UBound(Arr11, 2), UBound(Arr11)) = Application.Transpose(Arr11)
  30. End Sub
复制代码


回复

使用道具 举报

发表于 2012-7-9 16:42 | 显示全部楼层
高手如云,深不可测
回复

使用道具 举报

 楼主| 发表于 2012-7-9 21:44 | 显示全部楼层
hrpotter 发表于 2012-7-9 12:59
试试这个

谢谢,搞定了。                           
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 21:45 , Processed in 0.559928 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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