ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何设置变量

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-12-27 19:46 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
图片.png

例表格式如上图所示。

我现在在编写VBA,要实现表格的自动化处理:
表内为多个方向,每个方向分现状与目标,均包含100G、40G、10G、2.5G、GE,5种颗粒度,编写VBA时,会用到各列列号来表述某个方向的颗粒度位置
例如:“连接-至A-现状”的100G 用cells(1,"I")表示;“连接-至B-目标”的GE用cells(1,"AJ")表示。

由于表格模板会变动,后续可能会插入、删除部分列项,插入或删除列项后,导致cells(1,"I")不在对应原有方向的100G,cells(1,"AJ")不再对应原方向GE,导致VBA中引用单元格发生错误。
现求助各位老师 一个问题:
如何提前定义变量或预处理表格,使得在表格插入、删除部分列项时,能够尽可能的减少VBA代码的修改。
感谢各位老师提供以下思路


例表.rar

10.94 KB, 下载次数: 7

TA的精华主题

TA的得分主题

发表于 2023-12-27 20:14 来自手机 | 显示全部楼层
可以定义100G为range,然后用find方法在对应区域中查找100G返回一个range,

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-12-28 09:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
截止目前,想到的办法是:
第一步:为例表中每列设置一个对应的全局变量,将这些变量设置在一个列表中,
第二步:在引用例表中单元格进行计算时,找到单元格所在列,再找出该列列号对应的变量
第三步:编写一个列表查询函数,查询变量在列表中位置,函数返回值就为列号
后面再插入或删除列时,只需更新列表中的变量,就能实现列号的自动更新

但是这个方法,缺点就是:例表有多少列就要设置多少个变量
其他老师有没有更简单有效的方法实现

TA的精华主题

TA的得分主题

发表于 2024-1-1 18:19 来自手机 | 显示全部楼层
楼主好,你的意思是每次新增新列的时候,想要重新获取所有类型的所有颗粒的列序号吗?

TA的精华主题

TA的得分主题

发表于 2024-1-1 22:17 | 显示全部楼层
2行是大表头(有合并单元格),3行是对应的小表头,我可能会考虑代码运行后读取整个数据到数组,大表头数组内做填充处理,保证每一列都有大表头,然后大表头连接小表头作为关键字,列号作为值存入字典。之后从字典中根据关键字读取对应的列号。

TA的精华主题

TA的得分主题

发表于 2024-1-2 00:01 来自手机 | 显示全部楼层
feilanga 发表于 2024-1-1 22:17
2行是大表头(有合并单元格),3行是对应的小表头,我可能会考虑代码运行后读取整个数据到数组,大表头数组 ...

感觉这样挺好的

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-3 10:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
过客fppt 发表于 2024-1-1 18:19
楼主好,你的意思是每次新增新列的时候,想要重新获取所有类型的所有颗粒的列序号吗?

是的,在新增插入列之后,更新颗粒度列序号

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-3 10:12 | 显示全部楼层
feilanga 发表于 2024-1-1 22:17
2行是大表头(有合并单元格),3行是对应的小表头,我可能会考虑代码运行后读取整个数据到数组,大表头数组 ...

“大表头连接小表头作为关键字列号作为值存入字典”

这个处理办法我也想到过,但是“列号作为值存入字典”,有点不知道怎么处理。使用这种办法,我不知道如何保证在插入和更新列,修改字典的键之后,作为值的列号能随着更新

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-1-3 10:14 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 15:36 , Processed in 0.035988 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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