ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

问题:返回一行中倒数第一个非空单元格对应的排名;

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-8-8 15:59 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
问题:求,在L列返回数据区域标黄单元格,对应的排名值(即第一行的数值);
问题本质:返回一行中倒数第一个非空单元格对应的排名;
要求:与方法1不重复的公式。方法1公式:L2=INDEX($B$1:$J$1,,COUNTA(B2:J2))

(我的困扰:本打算用index与match、offset函数,公式L2=INDEX($B$1:$J$1,,match(offset(B2,0,counta(B2:J2)-1,1,1),B2:J2,0)),但发现有重复值,match函数最后返回来的列是错误的,不唯一,希望能通过offset函数直接定位到一行中最后一个非空单元格,然后通过index函数获取该值的列序号……具体如截图,数据见附件 match与column的区别.zip (8 KB, 下载次数: 11)

问题截图

问题截图




补充内容 (2017-9-19 16:28):
【已解决】

TA的精华主题

TA的得分主题

发表于 2017-8-8 16:40 | 显示全部楼层
=LOOKUP(,0/(B2:J2<>0),B$1:J$1)

TA的精华主题

TA的得分主题

发表于 2017-8-8 21:39 来自手机 | 显示全部楼层
本帖最后由 Nhand 于 2017-8-8 21:51 编辑

刚手机弄得,未验证,现在这个公式已经验证=INDEX(A$1:J$1,MAX(IF(A2:J2<>"",COLUMN(A:J))))

TA的精华主题

TA的得分主题

发表于 2017-8-8 22:05 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-9 19:04 | 显示全部楼层
xuejiebo 发表于 2017-8-8 16:40
=LOOKUP(,0/(B2:J20),B$1:J$1)

结果是对的,不太懂函数意义,大神解释下逻辑呗

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-9 19:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
Nhand 发表于 2017-8-8 21:39
刚手机弄得,未验证,现在这个公式已经验证=INDEX(A$1:J$1,MAX(IF(A2:J2"",COLUMN(A:J))))

哦哦,这个函数的逻辑是?

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-8-9 19:06 | 显示全部楼层
Nhand 发表于 2017-8-8 21:39
刚手机弄得,未验证,现在这个公式已经验证=INDEX(A$1:J$1,MAX(IF(A2:J2"",COLUMN(A:J))))

公式好像有点问题,运行结果是公式报错。数据范围貌似串了

TA的精华主题

TA的得分主题

发表于 2017-8-15 10:09 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
joy小夜猫 发表于 2017-8-9 19:06
公式好像有点问题,运行结果是公式报错。数据范围貌似串了

有一周多没上来了。。。我记得我的这两种方法都在你模板中都测试得到正确值了吧。。。你再发个运行错误的上来,我看看

TA的精华主题

TA的得分主题

发表于 2017-8-15 10:13 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
Nhand 发表于 2017-8-8 21:39
刚手机弄得,未验证,现在这个公式已经验证=INDEX(A$1:J$1,MAX(IF(A2:J2"",COLUMN(A:J))))

这个的逻辑是,如果A2:J2不等于空值,那么就输出数组{2,3,4,5,6,7,8}以第一行为例,这个数组构造了一个区域 max取最大值8 然后插入A1:J1的第8个5.。。

TA的精华主题

TA的得分主题

发表于 2017-8-15 10:19 | 显示全部楼层
Nhand 发表于 2017-8-8 22:05
=INDEX(A$1:J$1,MATCH(2,(A2:J2)/(A2:J2),1))
INDEX+MATCH 方式

这个函数(a2:j2)/(a2:j2)当有空值的时候,空/空会返回错误值,以第二行为例,返回{错误,1,1,1,1,1,1,1,错误,错误}这么一个区域,我用2区查找,那么永远查找不到,这个时候用match的最后一个参数1实现模糊匹配,它就返回最大值,最后一个1所在的位置,即是8
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 00:55 , Processed in 0.046861 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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