ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 793|回复: 9

[求助] 请各位老师帮忙看表格里面的公式能否用VBA处理出来结果?多谢!!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-11 20:35 | 显示全部楼层 |阅读模式
请各位老师帮忙看表格里面的公式能否用VBA处理出来结果?多谢!!

分类汇总.zip

78.83 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2018-9-11 21:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d1 As Object
  5.   Set d = CreateObject("scripting.dictionary")
  6.   Set d1 = CreateObject("scripting.dictionary")
  7.   With Worksheets("齐套明细")
  8.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  9.     arr = .Range("a2:g" & r)
  10.     For i = 1 To UBound(arr)
  11.       d1(arr(i, 2)) = d1(arr(i, 2)) + arr(i, 6)
  12.     Next
  13.   End With
  14.   With Worksheets("分类")
  15.     r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  16.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  17.     arr = .Range("a1").Resize(r, c)
  18.     ReDim brr(1 To UBound(arr), 1 To UBound(arr, 2))
  19.     For j = 1 To UBound(arr, 2) Step 3
  20.       d.RemoveAll
  21.       For i = 2 To UBound(arr)
  22.         If Len(arr(i, j)) <> 0 Then
  23.           If d1.exists(arr(i, j)) Then
  24.             d(arr(i, j + 1)) = d(arr(i, j + 1)) + d1(arr(i, j))
  25.           End If
  26.         End If
  27.       Next
  28.       brr(1, j) = Left(arr(1, j), 1) & arr(1, j + 1) & Mid(arr(1, j), 2)
  29.       brr(1, j + 1) = "数量"
  30.       m = 1
  31.       For Each aa In d.keys
  32.         m = m + 1
  33.         brr(m, j) = aa
  34.         brr(m, j + 1) = d(aa)
  35.       Next
  36.     Next
  37.   End With
  38.   With Worksheets("汇总")
  39.     .Range("a1").Resize(UBound(brr), UBound(brr, 2)) = brr
  40.   End With
  41. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-9-11 21:33 | 显示全部楼层
后面的一些没看懂,没有写完。

分类汇总.rar

89.24 KB, 下载次数: 4

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-11 22:05 | 显示全部楼层
chxw68 发表于 2018-9-11 21:33
后面的一些没看懂,没有写完。

感谢老师,非常感谢,辛苦了。


产品计划组产品计划组
核心网FAF服务器MM/SI
核心网SAF服务器LKDSJ
核心网QE服务器DSAFJL
核心网FAQ服务器FASD
核心网ERW服务器ASQ
核心网FA服务器QWR
核心网RET服务器WEQR
核心网WQER
核心网AFWQ


主要是这个要拆分出来,核心网和服务器要分开,分开的原则是根据上面的计划组来区别。

核心网及服务器代码机型
数量
FD,SA
4945
DSFJLKA
1946
QWE
3900
RIQU
4462
HGAD
3963



拆分后的结果是如下:请老师再帮忙看看,感谢感谢!!

核心网代码机型
数量
服务器代码机型
数量
DSFJLKA
635
DSFJLKA
1311
FD,SA
1688
FD,SA
3257
HGAD
2070
HGAD
1893
QWE
2723
QWE
1177
RIQU
3803
RIQU
659


TA的精华主题

TA的得分主题

发表于 2018-9-12 08:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. Sub test()
  2.   Dim r%, i%
  3.   Dim arr, brr
  4.   Dim d1 As Object
  5.   Set d = CreateObject("scripting.dictionary")
  6.   Set d1 = CreateObject("scripting.dictionary")
  7.   Set d2 = CreateObject("scripting.dictionary")
  8.   Set d3 = CreateObject("scripting.dictionary")
  9.   With Worksheets("齐套明细")
  10.     r = .Cells(.Rows.Count, 1).End(xlUp).Row
  11.     arr = .Range("a2:g" & r)
  12.     For i = 1 To UBound(arr)
  13.       If Not d1(arr(i, 2)) Then
  14.         ReDim brr(1 To 2)
  15.         brr(1) = arr(i, 4)
  16.       Else
  17.         brr = d1(arr(i, 2))
  18.       End If
  19.       brr(2) = brr(2) + arr(i, 6)
  20.       d1(arr(i, 2)) = brr
  21.     Next
  22.   End With
  23.   With Worksheets("核心网和服务器计划组分类")
  24.     r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  25.     arr = .Range("a2:e" & r)
  26.     For j = 1 To 4 Step 3
  27.       For i = 1 To UBound(arr)
  28.         If Len(arr(i, j)) <> 0 Then
  29.           d2(arr(i, j + 1)) = arr(i, j)
  30.         End If
  31.       Next
  32.     Next
  33.   End With
  34.   With Worksheets("分类")
  35.     r = .UsedRange.Find(what:="*", LookIn:=xlValues, lookat:=xlWhole, searchorder:=xlByRows, searchdirection:=xlPrevious).Row
  36.     c = .Cells(1, .Columns.Count).End(xlToLeft).Column
  37.     arr = .Range("a1").Resize(r, c)
  38.     For j = 1 To UBound(arr, 2) Step 3
  39.       For i = 2 To UBound(arr)
  40.         If Len(arr(i, j)) <> 0 Then
  41.           If d1.exists(arr(i, j)) Then
  42.             crr = d1(arr(i, j))
  43.             xm = ""
  44.             If arr(1, j) <> "核心网及服务器代码" Then
  45.               xm = arr(1, j)
  46.             Else
  47.               If d2.exists(crr(1)) Then
  48.                 xm = d2(crr(1))
  49.               End If
  50.             End If
  51.             If xm <> "" Then
  52.               If Not d.exists(xm) Then
  53.                 Set d(xm) = CreateObject("scripting.dictionary")
  54.               End If
  55.               d(xm)(arr(i, j + 1)) = d(xm)(arr(i, j + 1)) + crr(2)
  56.             End If
  57.           End If
  58.         End If
  59.       Next
  60.     Next
  61.   End With
  62.   With Worksheets("汇总")
  63.     .Cells.ClearContents
  64.     n = 1
  65.     For Each aa In d.keys
  66.       .Cells(1, n) = aa & "机型"
  67.       .Cells(1, n + 1) = "数量"
  68.       .Cells(2, n).Resize(d(aa).Count, 2) = Application.Transpose(Array(d(aa).keys, d(aa).items))
  69.       n = n + 3
  70.     Next
  71.   End With
  72. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2018-9-12 08:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
数据之间的关系挺绕人的,这次应该对了,有空了把代码再捋一捋。

分类汇总.rar

90.8 KB, 下载次数: 8

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 13:54 来自手机 | 显示全部楼层
感谢老师,晚上回去电脑上送花,辛苦了,另外请问下老师,如果齐套分析里面的代码有重复的,是不是运行就会出错,

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 18:40 | 显示全部楼层
本帖最后由 2728911088 于 2018-9-12 19:02 编辑
chxw68 发表于 2018-9-12 08:20
数据之间的关系挺绕人的,这次应该对了,有空了把代码再捋一捋。

非常非常感谢,辛苦了,一开始模拟数据准备的不全,因为出现重复代码的时候就计算不了,重复的代码数量是要相加的。烦请再看看,感谢感谢!!!


45646546.png


分类汇总.zip

94.41 KB, 下载次数: 0

TA的精华主题

TA的得分主题

发表于 2018-9-12 18:52 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
2728911088 发表于 2018-9-12 18:40
非常非常感谢,辛苦了,一开始模拟数据准备的不全,因为出现重复代码的时候就计算不了,重复的代码数量是 ...

楼主把我的代码都已经删除了,我还忙活着写什么呢?

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 18:59 | 显示全部楼层
chxw68 发表于 2018-9-12 18:52
楼主把我的代码都已经删除了,我还忙活着写什么呢?




失误,把附件上传错了,因为附件名称一样,不好意思,抱歉。

分类汇总.zip

94.41 KB, 下载次数: 0

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-14 20:20 , Processed in 0.026233 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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