ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 字典后输出优化

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-4-20 14:23 | 显示全部楼层 |阅读模式
字典后输出了。如果某列没有数据,输出有问题,怎么解决。另外多列怎么合并成一列(工作表“数据”)

字典后输出优化.zip

80.87 KB, 下载次数: 10

TA的精华主题

TA的得分主题

发表于 2023-4-20 14:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
写的很繁琐,描述下,你的要求是什么?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-20 14:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1、我在工作表名称“一层”,已经做好了合并汇总,把它输出到了工作表名称“数据”下了。但是在工作表名称“一层”中C、H、M、T、Z列不输入数据的话,程序报错。优化一下这个
2、输出到工作表名称“数据”下的数据能多列变两列吗?一列名称,一列数字。然后按照每列28行填在工作表名称“室内装潢1”下,29-56行填在工作表名称“室内装潢2”下...按顺序放

TA的精华主题

TA的得分主题

发表于 2023-4-20 15:10 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-20 15:16 | 显示全部楼层
没的办法(ˇˍˇ) 想~哇,哎

TA的精华主题

TA的得分主题

发表于 2023-4-20 15:16 | 显示全部楼层
  1. Sub test()
  2.     Dim r%, i%
  3.     Dim arr, brr
  4.     Dim ws As Worksheet
  5.     Dim rng As Range
  6.     Dim d As Object
  7.     Set d = CreateObject("scripting.dictionary")
  8.     For Each aa In Array("一层", "二层")
  9.         With Worksheets(aa)
  10.             For Each bb In Array("b4:q57", "s4:w24", "y4:ac24", "y27:ac47")
  11.                 arr = .Range(bb)
  12.                 For i = 4 To UBound(arr)
  13.                     For j = 2 To UBound(arr, 2) Step 5
  14.                         If Len(arr(i, j)) <> 0 Then
  15.                             If Not d.exists(aa) Then
  16.                                 Set d(aa) = CreateObject("scripting.dictionary")
  17.                             End If
  18.                             If Not d(aa).exists(bb) Then
  19.                                 Set d(aa)(bb) = CreateObject("scripting.dictionary")
  20.                             End If
  21.                             d(aa)(bb)(arr(i, j)) = d(aa)(bb)(arr(i, j)) + arr(i, j + 1)
  22.                         End If
  23.                     Next
  24.                 Next
  25.             Next
  26.         End With
  27.     Next
  28.     With Worksheets("数据")
  29.         .UsedRange.Offset(1, 0).Clear
  30.         r = 2
  31.         For Each aa In d.keys
  32.             For Each bb In d(aa).keys
  33.                 ReDim crr(1 To d(aa)(bb).Count, 1 To 2)
  34.                 m = 0
  35.                 For Each cc In d(aa)(bb).keys
  36.                     m = m + 1
  37.                     crr(m, 1) = cc
  38.                     crr(m, 2) = d(aa)(bb)(cc)
  39.                 Next
  40.                 With .Cells(r, 1)
  41.                     .Value = Switch(bb = "b4:q57", aa, bb = "s4:w24", "厨房间", bb = "y4:ac24", "卫生间1", bb = "y27:ac47", "卫生间2")
  42.                     .Resize(1, 2).Merge
  43.                     .Interior.ColorIndex = 15
  44.                 End With
  45.                 .Cells(r + 1, 1).Resize(UBound(crr), UBound(crr, 2)) = crr
  46.                 With .Cells(r, 1).Resize(1 + UBound(crr), 2)
  47.                     .Borders.LineStyle = xlContinuous
  48.                     .BorderAround LineStyle:=xlContinuous, Weight:=xlMedium
  49.                     With .Font
  50.                         .Name = "微软雅黑"
  51.                         .Size = 10
  52.                     End With
  53.                 End With
  54.                 r = r + 1 + UBound(crr)
  55.             Next
  56.         Next
  57.         With .UsedRange
  58.             .HorizontalAlignment = xlCenter
  59.             .VerticalAlignment = xlCenter
  60.         End With
  61.     End With
  62. End Sub

复制代码

TA的精华主题

TA的得分主题

发表于 2023-4-20 15:17 | 显示全部楼层
看了楼主的代码才看明白。

字典后输出优化.rar

89.83 KB, 下载次数: 14

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-20 15:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
chxw68 发表于 2023-4-20 15:17
看了楼主的代码才看明白。

我只能按照最笨的方法一个一个弄了,大神另外能不能输出的数据按照我的工作表“室内装潢1”的表格类型生成多页,保证28行汇总一次。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-4-20 15:31 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
实际上我就是这个目的,前面输入数据,后面自动生成固定表格,最好是把项目放进去,不是生成

TA的精华主题

TA的得分主题

发表于 2023-4-20 15:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
重新写完代码,刷新发现好多回复,高手就是多啊。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 09:49 , Processed in 0.046675 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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