ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

如何自动建立分级显示

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-7-28 17:53 | 显示全部楼层 |阅读模式
参考了gouweicao78的帖子http://club.excelhome.net/thread-502272-1-1.html中的方法2,
但是还是需要逐一设公式,有没有更快的办法,数据量太大,要设上千个公式。
附件为一小部分数据。

品种码.rar

42.89 KB, 下载次数: 342

TA的精华主题

TA的得分主题

发表于 2014-7-28 19:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
手工太麻烦,关注一下,vba应该有办法

TA的精华主题

TA的得分主题

发表于 2014-7-28 21:05 | 显示全部楼层
本帖最后由 wc0606 于 2014-7-28 21:06 编辑
  1. '按照级别创建分组
  2. Sub My_Group()
  3.     Dim LastRow, my_group_i, my_group_j As Integer
  4.     Dim i, j, m, my_data As Integer
  5.    
  6.     LastRow = ActiveSheet.UsedRange.Rows.Count
  7.     LastColumn = ActiveSheet.UsedRange.Columns.Count
  8.     LastColumn_E = Split(ActiveSheet.Cells(LastRow, LastColumn).Address, "[        DISCUZ_CODE_0        ]quot;)(1)
  9.     Set myrange = Application.InputBox("请选择分组依据所在列和首行数据所在行的交叉单元格:", "Make by wangc", Default:="$A$3", Type:=8)
  10.     my_group_i = myrange.Row
  11.     my_group_j = myrange.Column
  12.    
  13.     my_data = my_group_i
  14.     n = 0
  15.    
  16.     Application.ScreenUpdating = False
  17.    
  18.     ActiveSheet.UsedRange.ClearOutline
  19.    
  20.     ActiveSheet.Select
  21.     Cells.Select
  22.     With Selection.Interior
  23.         .Pattern = xlNone
  24.         .TintAndShade = 0
  25.         .PatternTintAndShade = 0
  26.     End With
  27.    
  28.     For i = my_data To LastRow Step 1
  29.         If ActiveSheet.Cells(i, my_group_j).Value = "" Then
  30.             GoTo tuichu
  31.         End If

  32.         If ActiveSheet.Cells(i, my_group_j).Value < 8 Then
  33.             For j = i + 1 To LastRow Step 1
  34. '                Debug.Print i
  35.                 m = ActiveSheet.Cells(j, my_group_j).Value - ActiveSheet.Cells(i, my_group_j).Value
  36.                 If m < -1 Then
  37.                     m = -1
  38.                 End If
  39.                 If m > 1 Then
  40.                     m = 1
  41.                 End If
  42.                
  43.                 If j = LastRow And j - i >= 1 And m = 1 Then
  44.                     ActiveSheet.Rows(i + 1 & ":" & j).Group
  45.                     ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.ThemeColor = xlThemeColorAccent6
  46.                     ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.TintAndShade = 0.799981688894314
  47.                     Exit For
  48.                 Else
  49.                     Select Case m
  50.                     Case 1
  51.                         
  52.                     Case 0
  53.                         If j - i = 1 Then
  54.                             Exit For
  55.                         Else
  56.                             ActiveSheet.Rows(i + 1 & ":" & j - 1).Group
  57.                             ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.ThemeColor = xlThemeColorAccent6
  58.                             ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.TintAndShade = 0.799981688894314
  59.                             Exit For
  60.                         End If
  61.                     Case Else
  62.                         If j - i = 1 Then
  63.                             Exit For
  64.                         Else
  65.                             ActiveSheet.Rows(i + 1 & ":" & j - 1).Group
  66.                             ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.ThemeColor = xlThemeColorAccent6
  67.                             ActiveSheet.Range("A" & i & ":" & LastColumn_E & i).Interior.TintAndShade = 0.799981688894314
  68.                             Exit For
  69.                         End If
  70.                     End Select
  71.                 End If
  72.             Next j
  73.         End If
  74.     Next i
  75.    
  76.     With ActiveSheet.Outline
  77.         .AutomaticStyles = False
  78.         .SummaryRow = xlAbove
  79.         .SummaryColumn = xlRight
  80.     End With
  81.    
  82.     GoTo myok
  83.    
  84. tuichu:
  85.     MsgBox "出错了!"
  86. myok:
  87.     ActiveSheet.Cells(1, 1).Select
  88.     Application.ScreenUpdating = True
  89. End Sub
复制代码
这里有个问题,没能解决,希望看到的高人帮忙解决下。http://club.excelhome.net/thread-1140921-1-1.html

TA的精华主题

TA的得分主题

发表于 2014-7-28 21:10 | 显示全部楼层
wc0606 发表于 2014-7-28 21:05
这里有个问题,没能解决,希望看到的高人帮忙解决下。http://club.excelhome.net/thread-1140921-1-1.html

品种码.rar (54.74 KB, 下载次数: 175)
附上附件

TA的精华主题

TA的得分主题

发表于 2014-7-29 13:56 | 显示全部楼层
按序号为分级显示自动创建组  按分级显示的组合自动编序号
http://club.excelhome.net/thread-1098513-1-1.html


9L 附件

TA的精华主题

TA的得分主题

发表于 2014-7-30 09:30 | 显示全部楼层
yjh_27 发表于 2014-7-29 13:56
按序号为分级显示自动创建组  按分级显示的组合自动编序号
http://club.excelhome.net/thread-1098513-1-1 ...

array数组中的-1,0,1,2,3这些数字让我感到疑惑,不是很理解.

TA的精华主题

TA的得分主题

发表于 2014-7-31 09:27 | 显示全部楼层
zhouxiao 发表于 2014-7-30 09:30
array数组中的-1,0,1,2,3这些数字让我感到疑惑,不是很理解.

见 链接帖  11L
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 05:37 , Processed in 0.037213 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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