原本函数如下显示正常
=INDEX(销售明细!D$2:D$1000,SMALL(IF(销售明细!$E$2:$E$1000="结清货款",ROW($1:$999),999),ROW(C1)))&""
后来在if语句中增加了or函数更改后如下,显示的结果变成了 销售明细表D行的全部数值。。
=INDEX(销售明细!E$2:E$1000,SMALL(IF(OR(销售明细!$E$2:$E$1000="结清货款",销售明细!$E$2:$E$1000="收取尾款"),ROW($1:$999),999),ROW(H2)))&""
好吧。。。求教高手们我这个函数应该怎么改才能达到我想要的效果
这个怎么没法返回第一行的值?
small函数部分得出的值如下
你最终要返回的是D列上的数据还是E列上的数据呢?你两个公式中INDEX引用的列都不同的,而且最后部分一个是 ROW(C1) 另一个却是 ROW(H2) 有点不理解了。如果方便可以将表格发过来的,这个没什么难度的问题。
[email protected]
你的答案基本已经解决问题,但是在运行small函数时返回的行的值有误,自动的忽略了第一行,就像我给发的图一样,左边是选择性黏贴的目标区域的值,右边是small函数得出的值,第一行被无视了,而这段公式的if段却能正确得出结果。不知道这个问题怎么解决
追答因为你的公式给出的引用范围就已经忽略了第一行,如:销售明细!D$2:D$1000,所以运算结果就自然没有第一行的事了。或者可以试试这样:
=INDEX(销售明细!D:D,SMALL(IF((销售明细!E:E="结清货款")+(销售明细!E:E="收取尾款"),ROW($1:$999),999),ROW(C1)))&""
更改以后无法获取第一行的值,具体看图
另外,999是因为如果对应的区域为控制的话不会显示错误。。。
1、这个999改为1000(或者大于999的任一数)的目的是能够正确的得到E1000的值。
2、不清楚你的表格具体是什么数据,如果要得到E列的值,并且有重复,这个公式没有错误。
我424527870,找我。
你的答案基本已经解决问题,但是在运行small函数时返回的行的值有误,自动的忽略了第一行,就像我给发的图一样,左边是选择性黏贴的目标区域的值,右边是small函数得出的值,第一行被无视了,而这段公式的if段却能正确的出结果。不知道这个问题怎么解决
追答没有第一行的原因是公式中ROW(H2)引用错误,应该为H1,没有注意,只是复制粘贴了你的公式,不好意思。
修改一下公式:
=INDEX(销售明细!E$2:E$1000,SMALL(IF((销售明细!$E$2:$E$1000="结清货款")+(销售明细!$E$2:$E$1000="收取尾款"),ROW($1:$999),1000),ROW(H1)))&""