ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 根据层级号数字,自动生成代号 求VBA高手来

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-7-25 12:35 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 vip0537 于 2021-7-26 18:00 编辑

求助问题描述:
1.根据F列层级数字和H列SLDASM或者SLDPART,自动生成如D列样式的代号,
2.G列文件名称包含特殊关键字(+m,GB,SA,减速机,镜向,等...)的忽略处理(关键字能增、减),不参与编号。
3.F列每出现一次1,同时H列为SLDASM,出现的1分别变为,.1    .2   .3    .n
4.F列每出现一次1,同时H列为SLDPRT,出现的1分别变为,-1    -2   -3     -n
5.在每一个1下面,下一个1上面会有2 3 2 3 4 4 4 2 3 3 2 2或者  2 3 4 4 4 5 6 2 3
详见附件
  类似于文件夹文件树形图(可能有四层,五层,多层)
谢谢大家

求助 根据层级号生成代号新.rar

17.21 KB, 下载次数: 5

TA的精华主题

TA的得分主题

发表于 2021-7-25 18:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
untitled1.png

51行为什么是-2不是-1-1


TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-25 19:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yjh_27 发表于 2021-7-25 18:25
51行为什么是-2不是-1-1

因为 H列都是 SLDPRT  是同一级别   所以数字要累加

TA的精华主题

TA的得分主题

发表于 2021-7-26 07:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
vip0537 发表于 2021-7-25 19:18
因为 H列都是 SLDPRT  是同一级别   所以数字要累加

也就是
3是按树形规则
4是不按树形规则,你应说清楚这个的全部规则。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-26 08:25 | 显示全部楼层
本帖最后由 vip0537 于 2021-7-26 08:53 编辑
yjh_27 发表于 2021-7-26 07:32
也就是
3是按树形规则
4是不按树形规则,你应说清楚这个的全部规则。

首先感谢大佬帮忙

可能是我没表述清楚,SLDASM是装配体类型(相当于文件夹),SLDPRT是零件类型(相当于文件),
这个类似于  这些文件分别在哪个文件夹里  第一个0相当于总文件夹,所有的 F列 1 + H列是(SLDASM)是总目录下的文件夹,所有的 F列 1 + H列是(SLDPRT)是总目录下的文件;(文件夹号为.1 .2 .3  .n累加,文件号-1 -2 -3   -n累加);第一个SLDASM对应的1和第二个SLDASM对应的1之间的 2 + H列是(SLDASM)  相当于.1文件夹下的子文件夹 , 2 + H列是(SLDPRT)相当于.1文件夹下的子文件,
依次类推第一个SLDASM对应的2和第二个SLDASM对应的2之间的 3 + H列是(SLDASM)  相当于.2文件夹下的子文件夹 , 3 + H列是(SLDPRT)相当于.2文件夹下的子文件;
如果不参与编号的行给写代码带来不方便,可以先手动删掉那些行
我的思路是先找同时满足 ( F列是1,H列是SLDASM)第一个1就变成.1,第二个1就变成.2  依次到.n;( F列的1,H列是SLDPRT)第一个1就变成-1,第二个1就变成-2  依次到-n;
再找.1和.2之间的2,同时满足 ( F列是2,H列是SLDASM)第一个2就变成.1.1,第二个1就变成.1.2  依次到.1.n;( F列的2,H列是SLDPRT)第一个2就变成.1-1,第二个2就变成.1-2  依次到.1-n;
再找.1.1和.1.2之间的3,同时满足 ( F列是3,H列是SLDASM)第一个3就变成.1.1.1,第二个1就变成.1.1.2  依次到.1.1.n;( F列的3,H列是SLDPRT)第一个3就变成.1.1-1,第二个3就变成.1.1-2  依次到.1.1-n;

再找.1.1.1和.1.1.2之间的4
。。。。。。。。。。。
循环 再找.2和.3之间的2,
。。。。。。。
循环 再找.3和.4之间的2,
循环 再找.n-1和.n之间的2,
最后循环 再找.n和-(*)或.(*)之间的2,
写到最后  我都感觉这个思路太麻烦了,

TA的精华主题

TA的得分主题

发表于 2021-7-26 09:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 yjh_27 于 2021-7-26 09:47 编辑
vip0537 发表于 2021-7-26 08:25
首先感谢大佬帮忙

可能是我没表述清楚,SLDASM是装配体类型(相当于文件夹),SLDPRT是零件类型(相当 ...

文件夹、文件说,理解了
文件要跟在 层级-1 的文件夹后面

树形结构要求源数据:1 有序
                              2 层级数向下增加时:要求连续,不然找不到上层数据
                              3 层级数减少时:清空下层级数据

你50行是文件,其对应得0级文件夹  所以:-1,1级文件夹被清空
你51行是文件,就找不到其对应得1级文件夹 ,这层级就是错误的。需要处理源数据,或给出处理规则。


如50行不清空文件夹处理,
你51行是文件,对应得1级文件夹 是 .4(38行),代号:.4-6


TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-26 12:37 | 显示全部楼层
yjh_27 发表于 2021-7-26 09:35
文件夹、文件说,理解了
文件要跟在 层级-1 的文件夹后面

你的可能已经满足需求了,我仔细看了一下,F51数据错了   2 应该为 1,

TA的精华主题

TA的得分主题

发表于 2021-7-27 09:34 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-7-27 11:03 | 显示全部楼层

谢谢  好厉害  基本可以了    原始数据适当调整下就行了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 16:49 , Processed in 0.044618 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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