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

练习5

[复制链接]
发表于 2015-8-21 20:20:26 | 显示全部楼层 |阅读模式
本帖最后由 临时户口 于 2015-9-8 11:21 编辑

题目:
  数据源工作表是某车间各工种、各技能等级的人数与平均工资统计表
  现车间推出新的技术等第制度,需要汇总各技术等级人数和平均工资,将结果填入答题区

  (新的制度:原来的A、B等第不变,C、D等第合并为C等,原来E等第进阶为D等)本题答对50dp,多解答上限额外给10dp。


本题由唐伯狼提供
本题截止日期2015-8-27

合并组别重新统计.rar

11.46 KB, 下载次数: 20

回复

使用道具 举报

发表于 2015-8-23 17:46:08 | 显示全部楼层
本帖最后由 夏寂雨透 于 2015-8-24 11:29 编辑

  1. Sub tongji()
  2. Dim 人数a, 人数b, 人数c, 人数d, 人数e, 工资a, 工资b, 工资c, 工资d, 工资e
  3. 人数a = WorksheetFunction.SumIf(Range("B:B"), "A等", Range("c:c"))
  4. 人数b = WorksheetFunction.SumIf(Range("B:B"), "B等", Range("c:c"))
  5. 人数c = WorksheetFunction.SumIf(Range("B:B"), "C等", Range("c:c")) + WorksheetFunction.SumIf(Range("B:B"), "D等", Range("c:c"))
  6. 人数d = WorksheetFunction.SumIf(Range("B:B"), "E等", Range("c:c"))
  7. 人数e = WorksheetFunction.SumIf(Range("B:B"), "F等", Range("c:c"))

  8. 工资a = WorksheetFunction.SumIf(Range("B:B"), "A等", Range("d:d"))
  9. 工资b = WorksheetFunction.SumIf(Range("B:B"), "B等", Range("d:d"))
  10. 工资c = WorksheetFunction.SumIf(Range("B:B"), "C等", Range("d:d")) + WorksheetFunction.SumIf(Range("B:B"), "D等", Range("d:d"))
  11. 工资d = WorksheetFunction.SumIf(Range("B:B"), "E等", Range("d:d"))
  12. 工资e = WorksheetFunction.SumIf(Range("B:B"), "F等", Range("d:d"))


  13. Range("H15") = 人数a: Range("I15") = 工资a
  14. Range("H16") = 人数b: Range("I16") = 工资b
  15. Range("H17") = 人数c: Range("I17") = 工资c
  16. Range("H18") = 人数d: Range("I18") = 工资d
  17. Range("H19") = 人数e: Range("I19") = 工资e
  18. End Sub

复制代码



点评

调用工作表函数解答不提倡  发表于 2015-9-8 11:05

评分

参与人数 1登攀 +30 收起 理由
临时户口 + 30

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2015-8-24 11:10:36 | 显示全部楼层
本帖最后由 q614081052 于 2015-8-24 11:26 编辑
  1. Option Explicit

  2. Sub aa()
  3.     Dim arr, i&, dic1, dic2, p1, q1, p2, q2
  4.     Set dic1 = CreateObject("Scripting.Dictionary")
  5.     Set dic2 = CreateObject("Scripting.Dictionary")
  6.     With Worksheets("数据源")
  7.         arr = .Range("a1").CurrentRegion
  8.         For i = 2 To UBound(arr)
  9.             If arr(i, 2) = "D等" Then
  10.                 arr(i, 2) = "C等"
  11.             ElseIf arr(i, 2) = "E等" Then
  12.                 arr(i, 2) = "D等"
  13.             ElseIf arr(i, 2) = "F等" Then
  14.                 arr(i, 2) = "E等"
  15.             End If
  16.             dic1(arr(i, 2)) = dic1(arr(i, 2)) + arr(i, 3)
  17.             dic2(arr(i, 2)) = dic2(arr(i, 2)) + arr(i, 4)
  18.         Next
  19.         p1 = dic1.keys: q1 = dic1.items
  20.         p2 = dic2.keys: q2 = dic2.items
  21.         For i = 0 To UBound(p1)
  22.             .Range("h" & i + 15) = q1(i)
  23.             .Range("i" & i + 15) = q2(i)
  24.         Next
  25.     End With
  26. End Sub
复制代码

点评

平均工资呢  发表于 2015-9-8 11:11

评分

参与人数 1登攀 +45 收起 理由
临时户口 + 45

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2015-8-25 21:10:34 | 显示全部楼层
  1. Sub 合并级别并重新计算()
  2.     Dim i As Long, arr1 As Variant, arr2 As Variant
  3.     Dim m1 As Long, m2 As Long, m3 As Long, m4 As Long
  4.     Dim sum1 As Long, sum2 As Long, sum3 As Long, sum4 As Long
  5.     Dim n1 As Double, n2 As Double, n3 As Double, n4 As Double
  6.     For i = 2 To Range("a1").CurrentRegion.Rows.Count
  7.         Select Case Range("b" & i)
  8.             Case "A等"
  9.             m1 = m1 + Range("c" & i)
  10.             sum1 = sum1 + Range("c" & i) * Range("d" & i)
  11.             Case "B等"
  12.             m2 = m2 + Range("c" & i)
  13.             sum2 = sum2 + Range("c" & i) * Range("d" & i)
  14.             Case "E等"
  15.             m4 = m4 + Range("c" & i)                            '新的D等人数
  16.             sum4 = sum4 + Range("c" & i) * Range("d" & i)       '新的D等工资总数
  17.             Case "F等"
  18.             m5 = m5 + Range("c" & i)
  19.             sum5 = sum5 + Range("c" & i) * Range("d" & i)
  20.             Case Else
  21.             m3 = m3 + Range("c" & i)
  22.             sum3 = sum3 + Range("c" & i) * Range("d" & i)
  23.         End Select
  24.     Next
  25.     n1 = sum1 / m1
  26.     n2 = sum2 / m2
  27.     n3 = sum3 / m3
  28.     n4 = sum4 / m4                                              '新的D等平均工资
  29.     n5 = sum5 / m5
  30.     arr1 = Array(m1, m2, m3, m4, m5)
  31.     arr2 = Array(n1, n2, n3, n4, n5)
  32.     Range("h15:h19") = Application.Transpose(arr1)
  33.     Range("i15:i19") = Application.Transpose(arr2)
  34. End Sub
复制代码

点评

存在变量未定义  发表于 2015-9-8 11:20

评分

参与人数 1登攀 +48 收起 理由
临时户口 + 48

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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