吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1233|回复: 26
收起左侧

[求助] vba层级结构实现求助

[复制链接]
doropio 发表于 2022-3-24 01:53
请教各位小伙伴Excel中实现层级编号的一个具体表格问题:
       在如图表格中,有一列数据以缩进的形式(三个空格为一个单位)来区分层级结构;如果是0缩进则为第一层级,记作1;以此类推3个层级则为1-1-1;实现层级结构的同时需要排序,如果前面出现了1-1-1而再次出现3级缩进则为1-1-2........
        具体表格形式如下图:

图中第二列B列以空格缩进,第一列为所示层级结构;
我经过尝试vba编程,因为微软的indentlevel方法不是空格,所以尝试一失败;
后经过百度在CS某N找到:https://blog.csdn.net/STR_Liang/article/details/106888042

使用如下方法可以获得空格个数 除以3则为缩进层级=LEN(A2)-LEN(SUBSTITUTE(A2,B2,"")
问题一:层级1和层级2,3,4,5需要判断,以循环次数来判断肯定不行,如何实现对应层级执行关系?
问题二:层级内部还有顺序判断是否为1-1,1-2,1-3,执行完毕进入下一层级,这个过程如何优化?


想请教一下各位小伙伴有没有好的实现方式?因为网上的vba实际案例很少 还想请问一下各位有没有好的vba书籍推荐或者是vba论坛抑或是视频都可,感觉excel这东西跟大数据太像了。。。。数据处理好头痛。。。
微信图片_20220324013916.png
blog.csdn.net_STR_Liang_article_details_106888042_看图王.jpg

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
为之奈何? + 1 + 1 我很赞同!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

zpy2 发表于 2022-3-24 05:58
https://club.excelhome.net/forum.php?mod=viewthread&tid=1620573&fromguid=hot&extra=&mobile=&_dsign=76ab3a70

这个也是层级的
cshadow 发表于 2022-3-24 06:58
简单的话,可以根据(缩进的数量/3),写几个局部变量,判断是哪一个层级
miocaro507 发表于 2022-3-24 08:21
unmask 发表于 2022-3-24 08:35
利用B列前导空格来分析阶层有点冒险,直接利用A列来分析阶层。
可以定义一个类(假设类名:RowData)来描述每行数据,额外增加2个属性来描述阶层。
colA
colB
...
parent
children

然后做一个Dictionary准备存放每条数据。
然后读每条数据,拆分colA最后一个"-"(如果存在的话),这样能得到parentKey和当前Key:colA
先尝试从Dictionary获取parentKey和colA得到上级pData和当前cData,谁不存在就创建RowData对象存放到Dictionary
这样pData和cData都会存在了,但是cData可能只有key,把excel中其他属性存入cData,同时建立pData和cData之间的层级关系。
读完所有数据,数据之间的层级关系也就有了,剩下的就按照你想要的逻辑进行处理。
HarckerG 发表于 2022-3-24 08:56
去excelhome,把你的原表附上,然后写清楚你要实现的目标,会有大佬把代码写给你的
EnterpriseSolu 发表于 2022-3-24 09:08
如果换成关系数据库SQL(mysql, sql server),思路会不会一下就打开了,  借助于数据库构造好需要的数据模型,再输出到EXCEL
gdpgdp317 发表于 2022-3-24 09:55
判断级别,比前一个级别大,则前一个级别字串加"-1",否则取前一个级别的对应级别,并在最后加1
如前一个级别代号是"1-2-3-4",当前级别是5,比前一个级别大,则代号变为"1-2-3-4-1"
若当前级别为3,则代号变为"1-2-4"
 楼主| doropio 发表于 2022-3-24 10:28
miocaro507 发表于 2022-3-24 08:21
是根据A列生成B列,还是根据B列生成A列?

B生成A的层级编号
 楼主| doropio 发表于 2022-3-24 10:41
EnterpriseSolu 发表于 2022-3-24 09:08
如果换成关系数据库SQL(mysql, sql server),思路会不会一下就打开了,  借助于数据库构造好需要的数据模型 ...

我能大概知道啥意思 但是原始数据在excel 且仅有空格为层级分级依据,导入的时候就能构建吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 14:49

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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