ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 武松打鼓

[求助] 统计各列的最后行号

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-10 09:08 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

不行,提示公式有问题  .e是什么意思

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-10 09:10 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 武松打鼓 于 2025-11-10 09:15 编辑
lgm693 发表于 2025-11-9 20:49
超级厉害,简洁,一般人想不到

我没成功,版本office2024

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-10 09:20 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-10 09:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你是那块小饼干 发表于 2025-11-10 09:02
=LOOKUP(1,0/(E3:E177""),ROW(E3:E177))

能知道最后行号就直接写答案了

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-10 09:21 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2025-11-10 09:23 | 显示全部楼层
=MAX(IF(E1:E500<>"",ROW(A1:A500),1))

TA的精华主题

TA的得分主题

发表于 2025-11-10 11:00 | 显示全部楼层
武松打鼓 发表于 2025-11-10 09:20
我去掉E前面的那个点后,成功了

"."应该是TRIMRANGE函数的一种写法吧,意思是取1列的有效区域,减小Excel的计算量,你的版本可能不支持TRIMRANGE函数。去掉“."不影响计算结果。

TA的精华主题

TA的得分主题

发表于 2025-11-10 11:01 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
武松打鼓 发表于 2025-11-10 09:21
能知道最后行号就直接写答案了

177代表最长那列的最大行号,人家写的没问题

TA的精华主题

TA的得分主题

发表于 2025-11-10 11:24 | 显示全部楼层

=LOOKUP(9^9,E:E,ROW(E:E))
这是利用lookup二分法查找的原理,本来原函数是要求二参升序排列,虽然这里没有按升序排列,但函数本身仍然会认为是按升序排列的,它会认为最后一个是最大的,返回的是小于查找值9^9的最大值,自然就会找到最后一个数字(通常会被认为是倒着查),最为关键的是,第一参数要是一个足够大的数(比二参中的任何数都要大,否则结果就不好预料了)
如果9的9次方仍然不够大,可以用9e307代替,这是EXCEL支持的最大数值了(9乘以10的307次方)。

上面说的是数字,如果要查最后的文本。公式改为:
=LOOKUP("座",E:E,ROW(E:E))
原理同上,“座”是字符中非常大编码。
image.png

TA的精华主题

TA的得分主题

发表于 2025-11-10 11:34 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
干脆用VBA,简简单单。Sub 按钮1_Click()
    Dim sws, i, c, n, s
    Set sws = ActiveSheet
    c = Array("e", "f", "g", "h", "i")
    For i = 0 To UBound(c)
        s = sws.Cells(Rows.Count, c(i)).End(xlUp).Row
        n = n + 1
        sws.Cells(5, n + 9) = s
    Next
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-12-7 21:25 , Processed in 0.028878 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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