ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 获取最后一个非空值单元格的行号

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-3 17:54 | 显示全部楼层
准提部林 发表于 2023-7-3 16:23
想快...加輔助列公式,
非空行...X1: =if(a1="","",row())
再用個單元格 Y1=MAX(X:X)

才发现,全部的回复中,就你的是对的,虽然办法有点绕,其它人给出的返回的结果全是最大有内容的单元格行号。

TA的精华主题

TA的得分主题

发表于 2023-7-4 09:38 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
天地一相 发表于 2023-7-3 16:34
谢谢,思路新奇。专门动手改了下,测量对比了,没速度上的优势。基本和蓝版给出的句子一样快。

車子跑不快...是因裡面擠太多人(也許還要輪流駕駛),
而不是...車子的顏色~~

若是迴圈內每填一次內容...公式重算...再取得重算後最新資料...再填..再算,
反反復復...這用數組也好不了太多~~

核心問題...在改善公式, 少用數組公式或全列引用, 改用輔助列公式也會有幫助~~


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-4 09:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
准提部林 发表于 2023-7-4 09:38
車子跑不快...是因裡面擠太多人(也許還要輪流駕駛),
而不是...車子的顏色~~

谢谢,是你说的这样。核心层计算那一步就是牵扯太多单元格公式计算的问题,难题目前无解,待以后看能否想出巧妙的办法了。我分段分块测试过耗时,当时觉得汇总结果这里有改善的空间,现在也想明白了,汇总伴随每次的计算,想快也快不了,也基本没啥空间改善了。我有其它软件计算,速度飞,但不能批量计算,一条一条就闹心,搞了VBA能实现批量,但速度远远不如软件了。待以后有机会了,直接拆解软件改装下,估计能实现。

TA的精华主题

TA的得分主题

发表于 2023-7-4 10:41 | 显示全部楼层
天地一相 发表于 2023-7-4 09:53
谢谢,是你说的这样。核心层计算那一步就是牵扯太多单元格公式计算的问题,难题目前无解,待以后看能否想 ...

公式改善方案//
1) 棄用全列引用, 可vba取得有效行數代入公式, 或以定義名稱圈定範圍
2) 棄用數組公式(三鍵輸入), 或由上而下遞增性的引用範圍, 有必要可加輔助列
3) 棄用如offset, indirect...等等逸失性函數
4) 如需要用 Row()等函數, 最好加單元格址如 Row(a1)
5) 部份計算, 也許可用vba的數組循環運算
6) 某些公式若是不聯動, 可先貼成值, 完成後再填入公式

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-4 18:40 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
准提部林 发表于 2023-7-4 10:41
公式改善方案//
1) 棄用全列引用, 可vba取得有效行數代入公式, 或以定義名稱圈定範圍
2) 棄用數組公式( ...

谢谢,易失性函数我基本避免了,数组公式好像没好办法,不是很懂,我是从多种公式测试选择速度快的,选出来的就有不少是数组公式。精准规定行列范围我全部做到了。多1格我都会避免。执行计算时,指定表格计算,指定区域计算都有使用。但也不常用。因为都不在循环层里,反正只执行一次,多点区域计算影响看不出。公式变数值这个我有采用,无关联的区域,我一律数值化,甚至清空,过后再写回去。就我的能力,能使用数组循环的我都用了,但实践中也发现,有些流程会使得采用数组法也没用,速度没改善。现在的速度比起初始产品时,已经升级迭代得很厉害了,其实还可以升级电脑,耗时现在都在能接受的范围内了。只是有点强迫症,总是想琢磨改写的更好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-6 09:01 | 显示全部楼层
准提部林 发表于 2023-7-4 10:41
公式改善方案//
1) 棄用全列引用, 可vba取得有效行數代入公式, 或以定義名稱圈定範圍
2) 棄用數組公式( ...

再谢你,受你启发,我琢磨出可以每次执行时获取实际列数,然后只在这个范围内执行,虽然看上起每次循环都多了一道工序,但测试发现提速不少呢!刚刚学好一点点数组法,还不会redim,我采用直接定义一个超大的数组,反复往里写内容,最后一次性写回。

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-6 09:34 | 显示全部楼层
准提部林 发表于 2023-7-4 10:41
公式改善方案//
1) 棄用全列引用, 可vba取得有效行數代入公式, 或以定義名稱圈定範圍
2) 棄用數組公式( ...

谢谢,回复还在审核,我就得赶紧纠正说法了。今天测试的数据条数比之前的少一半,导致错觉了,还以为有了喜人的效果。还一样,比传统办法还是慢一丁点。数组定义的大了,对速度的影响特别大。我知道汇总结果的行数,就精准定义了,测试,速度没优势。反倒是,每次循环判断数据边界赋值后精确执行操作,能减少一点点时间。看来,数组法汇总数据,不是一个好的选择对我。放弃了。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-16 21:38 , Processed in 0.035783 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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