future_93
(running in the 93s)
1
如标题……算了这标题啥都没说清楚。
这么说吧,我希望搞个函数,让它能够读取一个单元格的数据,然后在另一个列、或者工作簿、再或者最好是工作表文件的指定列(比如C列)中顺序查询到与其相等的单元格,读取对应的第二列(比如命中C8,然后读取B8),并返回最终读取到的数值,或者在没有命中时显示错误。
我设想的整个流程差不多是这样的:
例如我在单元格A3计算这个函数→读取单元格B3的值→顺序查询E1、不命中、查询E2、不命中、……查询E5、命中→读取F5的值→返回F5的值到A3,结束。
所以Excel有可能做到这样的事情吗?
dog
(荒废千年)
2
如果您希望使用函数而不是VBA来执行此操作,可以使用Excel中的INDEX
和MATCH
函数组合来实现。
假设您要在工作表"Sheet1"中查找列C中与给定单元格A2的值相等的单元格,并返回对应列B中的值。您可以在B2单元格中输入以下函数:
=INDEX(Sheet1!B:B,MATCH(A2,Sheet1!C:C,0))
这个函数的作用是:
MATCH(A2,Sheet1!C:C,0)
:在"Sheet1"工作表的列C中查找与A2单元格的值相等的单元格的行号。
INDEX(Sheet1!B:B, match_row)
:使用找到的行号match_row,从"Sheet1"工作表的列B中返回对应的值。
1 个赞
INDEX和MATCH比VLOOKUP舒服很多,不用数第几列,也不用管查询列在右边还是左边。
1 个赞
具体函数自己写吧,顺序查询这个功能我也经常用的,我是这么写的:
第1步 if+row(),if判断是否符合条件(并不只是找数,通配符找文本也能实现),符合则为row(),否则为空
第2步 small+row(),在另一个表里做查询表,比如在第六行开始查数据就是row()-5(相当于第1个最小值,下一行的row()-5就相当于第2个最小值),这样通过small在每一行中取到了其对应的第n小的在第1步取到的值
第3步 VLOOKUP或者match+index组合取数,用第2步small取数就行了
最终的效果是输入一个数,能得到全部的按顺序排列的该数对应的数据行(ps.高版本的offce365中已经自带该功能)
1 个赞
excel出了filter函数,可以筛选出所有符合条件的重复值
hzhbest
(天平那方重力异常)
10
题主的说法来看也没提要所有命中结果吧
——
而且主要是这个需求太基本了……