怎么快速求wps表格里面最小值所属于的列首? 您所在的位置:网站首页 怎么用wps写字 怎么快速求wps表格里面最小值所属于的列首?

怎么快速求wps表格里面最小值所属于的列首?

2023-03-09 14:10| 来源: 网络整理| 查看: 265

你已经在 B 列定出了最小值,那下一步就只要确定列数就行了。

最方便是用 xlookup,这个是 Office365 和 Office 2021 新增的函数,原 lookup 系列的升级版本。这个函数在 WPS 的新版本中也有,具体哪个版本号开始有不清楚。

如果你用的 WPS 有 xlookup,那直接用就行了,具体用法看帮助就行,很直观。

如果没有,那只能用老的 lookup实现:

=LOOKUP(1,0/($B2=$C2:$J2),$C$1:$J$1)

这里要注意,lookup的基本用法是 lookup(要查找的值, 值所在的行 / 列, 返回的行 / 列 ,直觉上应该是 =lookup(B2,C2:J2,C1:J1) ,但这是不对的。因为 lookup是只能升序查,而你的价格数据是乱序的,会有查不到报 #N/A的情况出现。

解决办法就是用经典的向量转换方法,把值所在行从乱序的价格向量换成只有一个有效值的数组。

($B2=$C2:$J2)这个公式会返回一个由 FALSE和TRUE组成的数组,这里用第二行的数据为例子:

C D E F G H I J 原数组 {98, 100, 76, 26, 25, 84, 30, 73} B2= {F, F, F, F, T, F F F} // F=FALSE,T=TRUE

但你直接查 TRUE 或者 FALSE是不行的,这个数组还是无序的,所以结果还是不对。

因此我们还要再加一步,用 0或 1去除以这个数组:

C D E F G H I J 原数组 {98, 100, 76, 26, 25, 84, 30, 73} B2= {F, F, F, F, T, F F F} // F=FALSE,T=TRUE 0/B2= {D, D D D 0, D D D} // D=#DIV/0!

结果就是得到一个只有目标位置为 0,其他都是 #DIV/0! 错误的数组。

这时,我们只要查到任意大于等于 0 的数,由于 lookup 找不到被查找值,就会返回数组中小于或等于被查找值的最大数值,那就是 0 。

因此,你也可以用 10 去除以,然后查找大于等于 10 的数。当然一般为了方便,都是用 0 除以,查找 0 或者 1,具体看你习惯。

另一个方法是用 INDIRECT 配合 MATCH,思路是先通过 MATCH 获得列号,然后用 INDIRECT 获得具体的单元格:

=INDIRECT("R1C"&(MATCH(B3,C3:J3,FALSE)+2),FALSE)

这个相对好理解,注意点只有 MATCH 返回的列计数是从 C 列开始的,要 +2 才是正确的列数,实际情况要自己算一下加多少,另外 MATCH 的 FALSE 参数也是必须的,精确匹配。

INDIRCET 的部分就是要设 FALSE 参数,用 R1C1的格式来定位单元格。

两个方法都试了 50000 条数据,我这台十几年前的 i3+8G 电脑都完全没有问题,所以两个方法在性能上应该没有明显差别。

两者的区别在于,如果有同样的数,lookup是返回最后一个,match是返回第一个,具体用哪个看你需求了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有