白话Excel函数公式 Office易学宝微视频教程合集(Excel+Word+PPT)
笨办法学VBA(从入门到精通) 高效办公必会的Office实战技巧
财务总监的Excel私房课 网易云课堂-Excel数据透视表应用大全
Excel图表神技
查看: 1688|回复: 13

【11126】练习5 水果公司销售统计

[复制链接]
发表于 2014-12-24 19:14:46 | 显示全部楼层 |阅读模式
本帖最后由 zmnyu 于 2015-1-4 09:12 编辑

题目要求:
在统计表的A3开始生成如图的合计数据
请注意开始统计表应该是一张空表,即所有的数据均要求动态生成。

小提示:本题不需要使用任何超过单元格操作外的任何高级技巧即可完美实现,当然愿意数组字典,ADO 一起上的同学也完全没问题,只要求解决不限制方法。

评分标准:
能得出正确答案:20DP
对代码进行优化,使其简洁易懂:30DP
代码能适应向下无限扩展:35DP
多种及优秀解法:40DP(原则上不超过40DP。特别优秀的解答最多可得50DP)


答题截止日期:2014年12月31日  21:00

天使之城水果公司销售统计.rar (13.35 KB, 下载次数: 56)
回复

使用道具 举报

发表于 2014-12-24 21:20:37 | 显示全部楼层
本帖最后由 lasharks 于 2014-12-25 20:41 编辑

凑热闹
1.选择性粘贴
  1. Sub Paste_Special()    'by lasharks
  2.     Dim i As Long                                                 '定义变量类型,用来记录行号                 '
  3.     Sheets("统计表").Activate                                     '激活"统计表"工作表为当前工作表
  4.     [A1].CurrentRegion.Clear                                      '清除目标区域----打扫战场
  5.     With Sheets("销售表")
  6.         i = .[A1].End(xlDown).Row                                 '从A1单元格开始,搜寻有数据的区域,记录行号
  7.         .Cells(i, 1).CurrentRegion.Copy [A1]                      '第一次找到数据区域,普通复制
  8.         i = .Cells(i + 4, 1).End(xlDown).Row                      '搜寻下一个有数据呃区域,记录行号
  9.         Do While i <> Rows.Count                                  '循环开始,直到行号到工作表尾部
  10.             .Cells(i, 1).CurrentRegion.Copy                       '复制数据区域
  11.             [A1].PasteSpecial Operation:=xlAdd                    '选择性粘贴---运算:加
  12.             i = .Cells(i + 4, 1).End(xlDown).Row                  '搜寻下一个有数据呃区域,记录行号
  13.         Loop
  14.     End With
  15.     [A1] = "合计"                                                 '更改A1单元格内容,符合题目要求
  16. End Sub
复制代码

2.ADO
  1. Sub Sql_Ado()    'by lasharks
  2.     Dim ExcelDBlink As String, mySql As String
  3.     Dim conn As Object, rst As Object
  4.     Dim i As Integer
  5.     ExcelDBlink = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & ThisWorkbook.FullName & ";Extended Properties=""Excel 12.0 Xml;HDR=NO"""    '链接
  6.     '指定数据库引擎,HDR=NO 表示第一行中包不含列名而是数据
  7.     Set conn = CreateObject("Adodb.Connection")                '建立链接对象
  8.     Set rst = CreateObject("Adodb.recordset")                  '建立数据集对象
  9.     conn.Open ExcelDBlink                                      '打开数据库连接
  10.     mySql = "select F1 as 合计,sum(F2) as 1月,sum(F3) as 2月,sum(F4) as 3月 from [销售表$a:d] group by F1 having F1 like '%部'"                   'sql语句,核心
  11.     rst.Open mySql, conn                                       '提取相关数据,装入数据集对象
  12.     With Sheets("统计表")
  13.         .[F1].CurrentRegion.Clear                              '清除相关区域,打扫战场
  14.         For i = 1 To rst.Fields.Count                          '循环读取列名,输出到单元格
  15.             .Cells(1, 5 + i) = rst.Fields(i - 1).Name
  16.         Next
  17.         .[F2].CopyFromRecordset rst                            '输出数据到单元格
  18.     End With
  19.     rst.Close                                                  '关闭数据集
  20.     conn.Close                                                 '关闭数据库连接
  21.     Set conn = Nothing
  22.     Set rst = Nothing
  23. End Sub
复制代码



点评

鲨鱼老师的代码,不奖励,不讲评  发表于 2015-1-4 11:26
回复 支持 反对

使用道具 举报

发表于 2014-12-25 00:11:16 | 显示全部楼层
本帖最后由 cleverzhzhf 于 2014-12-26 13:59 编辑

竟然有人比我先抢座了:
  1. Sub SalesCount1()
  2. Dim cell As Range, i As Long, j As Long
  3. Dim arr, brr
  4. With Sheets("销售表")
  5.     Set cell = .Range("A1").End(xlDown)
  6.     arr = cell.CurrentRegion
  7.     arr(1, 1) = "合计"
  8.     Set cell = cell.End(xlDown).End(xlDown)
  9.     Do
  10.         brr = cell.CurrentRegion
  11.         For i = 2 To UBound(brr)
  12.             For j = 2 To UBound(brr, 2)
  13.                 arr(i, j) = arr(i, j) + brr(i, j)
  14.             Next j
  15.         Next i
  16.         Set cell = cell.End(xlDown).End(xlDown)
  17.     Loop Until cell.Row = .Rows.Count
  18. End With
  19. Sheets("统计表").Range("A3").Resize(5, 4) = arr
  20. End Sub
复制代码
用字典的方式写一个:
  1. Option Explicit
  2. Sub SalesCount2()
  3. Dim arr, brr
  4. Dim i As Long, j As Long
  5. Dim dic As Object
  6.     arr = Sheets("销售表").UsedRange    '读入数据区
  7.     brr = Sheets("销售表").Range("A1").End(xlDown).CurrentRegion    '通过第一片数据,确定整体数据区域
  8.     brr(1, 1) = "总计"
  9.     Set dic = CreateObject("scripting.dictionary")
  10.         For i = 3 To UBound(arr)
  11.             For j = 1 To UBound(arr, 2)
  12.                 '对于每一个元素,如果是数字,则读入字典,创建“南部1月”这种查询值
  13.                 If IsNumeric(arr(i, j)) Then
  14.                     dic(arr(i, 1) & arr(3, j)) = dic(arr(i, 1) & arr(3, j)) + arr(i, j)
  15.                 End If
  16.             Next j
  17.         Next i
  18.         For i = 2 To UBound(brr)
  19.             For j = 2 To UBound(brr, 2)
  20.                 brr(i, j) = dic(brr(i, 1) & brr(1, j))  '将字典中对应的查询值写入到brr数组
  21.             Next j
  22.         Next i
  23.         Set dic = Nothing
  24.         Sheets("统计表").Range("A3").Resize(i - 1, j - 1) = brr '数组赋值单元格
  25. End Sub
复制代码

点评

宅班老师的VBA 水平突飞猛进啊,恭喜恭喜。老规矩不给分,不奖励。  发表于 2015-1-4 11:51
回复 支持 反对

使用道具 举报

发表于 2014-12-25 21:32:08 | 显示全部楼层
利用录制宏用合并计算也可以吧?

就会这两种了。。。

  1. Sub 汇总()
  2.     Dim d As New Dictionary, i%, j%, arr, targetarr, n%, nrow%
  3.     arr = Sheets("销售表").Range("a3:d" & Sheets("销售表").Range("a65535").End(3).Row) '赋值给数组
  4.     n = 1
  5.     For i = 1 To UBound(arr)
  6.         If Not d.Exists(arr(i, 1)) And InStr(arr(i, 1), "部") Then
  7.             d(arr(i, 1)) = n
  8.             n = n + 1
  9.         End If
  10.     Next '如果A列含有"部"则加入字典并确定字典的位置
  11.     ReDim targetarr(1 To d.Count + 1, 1 To UBound(arr, 2))
  12.     targetarr(1, 1) = "合计"
  13.     For i = 1 To UBound(arr)
  14.         If d.Exists(arr(i, 1)) Then
  15.             For j = 1 To 3
  16.                 targetarr(1, 1 + j) = j & "月" '将月份写入数组中
  17.                 targetarr(d(arr(i, 1)) + 1, 1) = arr(i, 1) '将区域写入数组中
  18.                 targetarr(d(arr(i, 1)) + 1, 1 + j) = targetarr(d(arr(i, 1)) + 1, 1 + j) + arr(i, 1 + j) '按区域/月份求和
  19.             Next
  20.         End If
  21.     Next
  22.     With ThisWorkbook.Sheets
  23.         On Error Resume Next
  24.         If Len(.Item("统计表").Name) = 0 Then
  25.             With .Add(after:=.Item(.Count))
  26.                 .Name = "统计表"
  27.             End With
  28.         Else
  29.             .Item("统计表").Cells.Delete
  30.         End If
  31.     End With '创建sheets:统计表
  32.     Sheets("统计表").Range("a3").Resize(UBound(targetarr), UBound(targetarr, 2)) = targetarr '将数组写入单元格内
  33. End Sub
  34. Sub 汇总2()

  35.     Dim arr, targetarr(1 To 5, 1 To 4), i%, j%, irow%
  36.     arr = Sheets("销售表").Range("a3:d" & Range("a65535").End(3).Row + 5) '赋值给数组
  37.     For i = 1 To UBound(arr) - 5
  38.         If arr(i, 2) = "1月" And arr(i + 5, 2) = "" Then '如果满足第一行第二个单元格为1月并第六行为空单元格则进入循环
  39.             For irow = 1 To 4 '对区域进行循环
  40.                 For j = 1 To 3 '对月份进行循环
  41.                     targetarr(irow + 1, j + 1) = targetarr(irow + 1, j + 1) + arr(i + irow, j + 1) '按区域/月份求和
  42.                     targetarr(1, j + 1) = j & "月" '将月份写入数组中
  43.                     targetarr(irow + 1, 1) = arr(irow + 1, 1) '将区域写入数组中
  44.                 Next
  45.             Next
  46.         End If
  47.     Next
  48.     targetarr(1, 1) = "合计"
  49.     With ThisWorkbook.Sheets
  50.         On Error Resume Next
  51.         If Len(.Item("统计表").Name) = 0 Then
  52.             With .Add(after:=.Item(.Count))
  53.                 .Name = "统计表"
  54.             End With
  55.         Else
  56.             .Item("统计表").Cells.Delete
  57.         End If '创建sheets:统计表
  58.         Sheets("统计表").Range("a3").Resize(UBound(targetarr), UBound(targetarr, 2)) = targetarr '将数组写入单元格内
  59.     End With
  60. End Sub
复制代码


练习5 小丽.zip

19.2 KB, 下载次数: 4

点评

方法1 用了字典,方法2则是数组循环,看的出基本功相当扎实。特别是方法2 中 with 集合的 .item 属性的使用,说明对集合认识也相当不错。但是完全是初级班的内容之外,你来这里学啥?浪费时间?  发表于 2015-1-4 11:50

评分

参与人数 1登攀 +46 收起 理由
hehex + 46 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2014-12-25 22:11:29 | 显示全部楼层
  1. Sub aa()
  2.   Dim i As Integer
  3.   Dim j As Integer
  4.   Dim row1 As Integer
  5.   Dim col1 As Integer
  6.   row1 = Sheets("销售表").UsedRange.Rows.Count
  7.   col1 = Sheets("销售表").UsedRange.Columns.Count
  8.    Sheets("统计表").UsedRange.Clear   '清除原有数据
  9.   '以下做行头以及列头
  10.   Sheets("统计表").Cells(1, 1) = "合计"
  11.   For i = 1 To row1
  12.      If col1 = Sheets("销售表").Cells(i, 16384).End(xlToLeft).Column Then
  13.         Sheets("统计表").Cells(1, 2).Resize(1, col1 - 1).Value = Sheets("销售表").Cells(i, 2).Resize(1, col1 - 1).Value
  14.         Sheets("统计表").Cells(2, 1).Resize(4, 1).Value = Sheets("销售表").Cells(i + 1, 1).Resize(4, 1).Value
  15.         Exit For
  16.      End If
  17.   Next i
  18.   '以下汇总数据
  19.   For j = 2 To col1
  20.      For i = 1 To row1
  21.         If Sheets("销售表").Cells(i, 1) = Sheets("统计表").Cells(2, 1) Then
  22.           Sheets("统计表").Cells(2, j) = Sheets("统计表").Cells(2, j) + Sheets("销售表").Cells(i, j)
  23.         ElseIf Sheets("销售表").Cells(i, 1) = Sheets("统计表").Cells(3, 1) Then
  24.           Sheets("统计表").Cells(3, j) = Sheets("统计表").Cells(3, j) + Sheets("销售表").Cells(i, j)
  25.         ElseIf Sheets("销售表").Cells(i, 1) = Sheets("统计表").Cells(4, 1) Then
  26.           Sheets("统计表").Cells(4, j) = Sheets("统计表").Cells(4, j) + Sheets("销售表").Cells(i, j)
  27.         ElseIf Sheets("销售表").Cells(i, 1) = Sheets("统计表").Cells(5, 1) Then
  28.           Sheets("统计表").Cells(5, j) = Sheets("统计表").Cells(5, j) + Sheets("销售表").Cells(i, j)
  29.         End If
  30.      Next i
  31.   Next j
  32. End Sub
复制代码

点评

不错,完全实现了效果。完全符合初级班的知识,循环掌握的很扎实,需要提高的就是技巧性。纯单元格循环效率有点低  发表于 2015-1-4 11:41

评分

参与人数 1登攀 +30 收起 理由
hehex + 30 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2014-12-26 11:19:05 | 显示全部楼层
本帖最后由 hehex 于 2014-12-26 16:24 编辑

简述一下本题的出题思路和知识考察应用范围:

首先看到表格上各种水果的销售金额记录,需要按地区合计。每种水果的记录之间有空行,这是非常重要的一点。
所以羊班每次说她的代码可以忽略俺的空行,都会遭到俺的驳斥,你不能自以为是的把题目给修改了。

本来空行是不规则的,后来接受L 大的意见,可以让空行是规则的,比如每种水果之间间隔一行。这样就让最初级的学员使用录制宏解决本题成为可能了。

解决一个实际问题很简单,先拿支笔,拿张纸,看看自己有没有思路,写下来。不要先掺和神马VBA 的知识,数组字典ADO 往里套,这不好。

首先我们看到它需要的合计数据统计所占的位置和我们初始的一项水果的数据所占区域相同,只不过起始单元格的内容不同而已对吧,是不是特想把第一个区域复制过去,然后把水果名称那栏改成合计就好了?

okay, 我们有了一个基本的思路了,先复制区域过去作为目标表的模板。假设我们不会VBA 这题只能手动解决,怎么解决呢?
如果有一定的基础技巧知识的话,(如果不懂可以报名木兰老师,金老师的课程去学,这个知识点他们都反复讲)有个复制和计算有关的操作叫选择性粘贴吧?我们用肉眼找到下一个水果区域,把数据那部分区域复制下来,然后用选择性粘贴求和功能复制到合计区域的数据区那里,是不是就能达到合计的效果了?这样反复来是否就能把所有水果的数据复制过去完成合计了呢?

好了,我们现在已经有了思路,是时候把思路转换成VBA 代码了。
首先我们要了解到数据源表的水果所占的数据最后一行的位置,怎么找,问百度,或者看过胡说VBA 的同学应该知道单元格的End 属性,返回行。

然后呢,我们从第一个水果区域开始向下判断,首先判断目标表是不是空的(本题要求初始目标表是空表),是从目标表的A3 开始的,那么我们判断A3 好了,如果A3 里没东西,那它就是空的。我们把第一个水果区域复制过来,怎么得到第一个水果区域呢?我们在第一个区域任意单元格点ctrl+a 是否就选中了? 翻译成VBA (胡说VBA 重点有讲)就是某区域内单元格的CurrentRegion 属性,返回这个表。把这个区域直接复制到目标表A3 位置,并且把A3 的值改成合计,第一步完成了。

Okay, 现在目标表上合计的雏形已经出现了,只不过只是第一种水果的数据,我们要选择性粘贴后面的数据了。且慢,我们还有2大问题要解决:
1、如何判断下一个水果的区域何在?
2、如何选定选择性粘贴的目标数据区域和源复制区域
且听俺一一道来:
1、我们已经找到了第一个水果区域,那么很容易我们可以知道该区域所占的行数,CurrentRegion.Rows.Count 。我们又知道起始的位置的行,把这个想加就是第一个水果区域所在的最后一行的下面一行。我们同时又知道这一行一定是空行,那么判断这个行数+1 所在行的A 列是否为空就可以了,如果不为空那么说明已经定位到下一个水果表格区域里了,如果为空,那么就继续向下一行判断。而且该行一定要小于等于我们之前返回的所用区域的最后一行,如果大于,那就说明下面已经没有了,可以结束了,如何向下判断呢?很简单循环。

2、我们找到表格所在的任何一个单元格就能返回表格的所在的整个区域了--CurrentRegion ,那么我们怎么拿到这个区域的数据区的位置呢? 很简单,观察:第一行是水果和月份,第一列是南部,北部等地区,这是不变的。所以我们的区域向下和向右各偏移一行,就是我们要使用选择性粘贴的数据源部分了。如果对工作表函数offset 有概念的同学很容易理解这个。VBA 也提供了区域偏移的属性,就是offset 和resize 的组合使用,这是本题的最难的地方,可以查帮助和百度。再不行直接调用offset 工作表函数好了。那么目标复制位置单元格呢?简单只要该位置的首单元格就好,就是原目标位置向下和向右偏移一行一列的单元格,一个offset 就搞定了。

好了,解决了上面的两个问题,我们就可以选择性粘贴求和了,不会写代码?简单,录制个宏然后抄过去不完事了。

本题,集中考察了单元格对象的各个方面,判断空啊,返回最后行啊,currentregion 啊,offset, resize 啊,copy 啊, 选择性粘贴啊。本来是俺最新的胡说教程自用的,出的比较得意的单元格对象的课后练习,没准备给免费培训用的。临时户口非要给本班使用,所以拿过来用用。对于初级学员来说确实难度偏大了一点点,0基础的同学做不出来很正常。但是认真学习了胡说VBA 的同学不应该毫无思路。
另外:俺对上一班11125 班有一个高清辅导教程,面对面讲解的,可以从俺签名的网盘下载观看(胡说VBA 那个帖子莫名其妙给删除了)。只有最后4课时,前面俺没有录制。如果看过那个辅导课的循环讲解(2小时) 和认识对象(2小时) 课程的同学,做本题难度还真不是太大。我对这个代码功能完全无语了,中文注释完全乱码了,请参考附件吧。
附代码:


  1. Sub &Ccedil;ó&ordm;&Iuml;&frac14;&AElig;()
  2.     Dim irow As Long, xrows As Long, areaRows As Long, areaCols As Long
  3.     Dim rDestination As Range, rSource As Range
  4.     Application.ScreenUpdating = False
  5.     '&Iuml;&Egrave;&Ccedil;ó&sup3;&ouml;&Iuml;ú&Ecirc;&Ucirc;±í×&icirc;&ordm;ó·&Ccedil;&iquest;&Otilde;&micro;&yen;&Ocirc;&ordf;&cedil;&ntilde;&micro;&Auml;&ETH;&ETH;&Ecirc;&yacute;
  6.    
  7.     Set rDestination = Worksheets("&Iacute;&sup3;&frac14;&AElig;±í").Range("a3")
  8.    
  9.     xrows = Worksheets("&Iuml;ú&Ecirc;&Ucirc;±í").Cells(Rows.Count, "a").End(xlUp).Row
  10.    
  11.     With Worksheets("&Iuml;ú&Ecirc;&Ucirc;±í")
  12.          irow = 3
  13.          areaRows = .Cells(irow, 1).CurrentRegion.Rows.Count '&Atilde;&iquest;&Ouml;&Ouml;&Euml;&reg;&sup1;&ucirc;&micro;&Auml;&Iuml;ú&Ecirc;&Ucirc;&Ccedil;&oslash;&Oacute;ò&para;&frac14;&Ecirc;&Ccedil;&Iuml;à&Iacute;&not;&micro;&Auml;&pound;&not;&acute;&Euml;±&auml;&Aacute;&iquest;·&micro;&raquo;&Oslash;&Ccedil;&oslash;&Oacute;ò&Auml;&Uacute;&ETH;&ETH;&Ecirc;&yacute;
  14.          areaCols = .Cells(irow, 1).CurrentRegion.Columns.Count '·&micro;&raquo;&Oslash;&Ccedil;&oslash;&Oacute;ò&Auml;&Uacute;&Aacute;&ETH;&Ecirc;&yacute;
  15.          
  16.          Do While irow <= xrows
  17.             If Not IsEmpty(.Cells(irow, 1)) Then
  18.             '&Egrave;&ccedil;&sup1;&ucirc;&Iacute;&sup3;&frac14;&AElig;±í&Ecirc;&Ccedil;&Iacute;ê&Egrave;&laquo;&iquest;&Otilde;&micro;&Auml;&pound;&not;&frac34;&Iacute;°&Ntilde;&micro;&Uacute;&Ograve;&raquo;&cedil;&ouml;&Ecirc;&yacute;&frac34;&Yacute;&Ccedil;&oslash;&Oacute;ò&Ouml;±&frac12;&Oacute;&cedil;&acute;&Ouml;&AElig;&sup1;&yacute;&Egrave;&yen;
  19.                 If IsEmpty(rDestination) Then
  20.                     Set rSource = .Cells(irow, 1).CurrentRegion
  21.                     rSource.Copy rDestination
  22.                     rDestination.Cells(1).Value = "&ordm;&Iuml;&frac14;&AElig;"
  23.                     Set rDestination = rDestination.Offset(1, 1) '&frac12;&laquo;&cedil;&acute;&Ouml;&AElig;&micro;&Auml;&Auml;&iquest;±ê&Ccedil;&oslash;&Oacute;ò&Ouml;&cedil;&Iuml;ò&Ecirc;&yacute;&frac34;&Yacute;&Ccedil;&oslash;&Oacute;ò&micro;&Auml;&AElig;&eth;&micro;&atilde;
  24.                 Else
  25.                      '&Egrave;&ccedil;&sup1;&ucirc;&Iacute;&sup3;&frac14;&AElig;±í&Ograve;&Ntilde;&frac34;&shy;&cedil;&acute;&Ouml;&AElig;&sup1;&yacute;&Ecirc;&yacute;&frac34;&Yacute;&Aacute;&Euml;&pound;&not;&Ocirc;ò&Ouml;&Oslash;&ETH;&Acirc;&Eacute;ú&sup3;&Eacute;&Ecirc;&yacute;&frac34;&Yacute;&Ocirc;&acute;&Ccedil;&oslash;&Oacute;ò&Oacute;&Atilde;&Ntilde;&iexcl;&Ocirc;&ntilde;&ETH;&Ocirc;&Otilde;&sup3;&Igrave;ù&Ccedil;ó&ordm;&Iacute;&micro;&Auml;·&frac12;&Ecirc;&frac12;&frac12;&oslash;&ETH;&ETH;&Iacute;&sup3;&frac14;&AElig;
  26.                      Set rSource = .Cells(irow, 1).CurrentRegion.Offset(1, 1).Resize(areaRows - 1, areaCols - 1)
  27.                      rSource.Copy
  28.                      rDestination.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
  29.                 End If
  30.                 irow = irow + areaRows + 1
  31.             Else
  32.                 irow = irow + 1
  33.             End If
  34.             
  35.          Loop
  36.     End With
  37.    
  38.     Set rSource = Nothing
  39.     Set rDestination = Nothing
  40.    
  41.     Application.CutCopyMode = False '&Ccedil;&aring;&iquest;&Otilde;&frac14;&ocirc;&Ccedil;&ETH;°&aring;
  42.     Application.ScreenUpdating = True
  43.     Application.Speech.Speak "&Iacute;ê&sup3;&Eacute;&Aacute;&Euml;"
  44. End Sub
复制代码








销售统计.zip

18.38 KB, 下载次数: 13

回复 支持 反对

使用道具 举报

发表于 2014-12-26 15:31:30 | 显示全部楼层
方法1 在模块1中 用了公式,不要拍我。。。
方法2 在模块2中 用了数据透视表的建立
觉得循环公式可以用 但是想不到如何用,等老师解题时学习下

天使之城水果公司销售统计练习5.rar

35.84 KB, 下载次数: 2

点评

方法1,几乎就是纯公式,但是得到了正确的结果。方法2 删除空行的思路是可以的,请注意通常如果要删除空行是需要从下向上进行倒着循环,这样不容易出错。方法2数透的结果不正确,再检查代码。  发表于 2015-1-4 11:58

评分

参与人数 1登攀 +20 收起 理由
hehex + 20 继续努力

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2014-12-27 08:19:57 | 显示全部楼层
本帖最后由 sahara2010 于 2014-12-27 08:30 编辑
  1. Sub test()
  2.     With Sheet2
  3.         .[a3].Consolidate "销售表!" & Sheet1.UsedRange.Offset(2).Address(ReferenceStyle:=xlR1C1), xlSum, 1, 1
  4.         .[a3] = "合计": .[a8:a10000].Clear
  5.    End With
  6. End Sub
复制代码

点评

合并计算,好。 代码精简,应该是从录制宏获得的灵感,offset(2) 用的很巧妙,看的出基本功很扎实,完全符合题意。  发表于 2015-1-4 12:04

评分

参与人数 1登攀 +38 收起 理由
hehex + 38 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2014-12-27 16:30:18 | 显示全部楼层
本帖最后由 younghuman 于 2014-12-30 18:00 编辑

11126-其它-younghuman-练习5.rar (35.88 KB, 下载次数: 13)

点评

答案兼顾了各个方面,非常完美。注释也非常清楚,可作为标准答案。  发表于 2015-1-4 12:07

评分

参与人数 1登攀 +50 收起 理由
hehex + 50 很给力!

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2014-12-28 18:43:10 | 显示全部楼层
菜鸟交练习了。。。期待看到高手的解答!!

练习5-天使之城水果公司销售统计-zcy146.rar

21.26 KB, 下载次数: 5

点评

基本达成了练习的要求,对统计表的统计区域的数据生成稍显笨拙。  发表于 2015-1-4 12:11

评分

参与人数 1登攀 +30 收起 理由
hehex + 30 赞一个!

查看全部评分

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

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