谁能帮忙解答下这个公式的大概含义?谢谢
还是有点不太明白,我按你说的试了下好像不行。如果还是在我的原有公式基础上,我想左拉自动生成公式是不是可以操作?比如这个公式是E列(也就是第5列)的值,左面一个变成F列(也就是第6列)的值,再下一个就是G列(第7列)的值……如果不能的话,想实现这个目的,该怎么操作? 展开
公式想表达的意思是,返回应付账款明细表G列前5000行与本表J3单元格内容相同时,应付账款明细表E列的值。
前面加了两个条件,想达到:1、如果下拉时行数超过相同数量,单元格为空;2、如果相同时,E列为空,也显示为空。但是此公式用错了第二个IF位置,即使E列为空,也只返回0,而不返回空。
事实上这个公式复杂了,可以用:
=IF(INDEX(应付帐款明细表!E:E,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1)))="","",INDEX(应付帐款明细表!E:E,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1))))
如果E列不是数值,是文本的话,可以用:
=INDEX(应付帐款明细表!E:E,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1)))&""
上面的公式都是数组公式,即同时按住Ctrl+Shift+Enter三键结束公式编辑,会自动生成一对{},下拉。
简单的说一下最后一个公式的含义:
IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),如果单元格内容相同,返回相应的行号,不相同返回4^8,也就是65536,一般表格用不到这么多行,可确保后来返回的E65536是空值;
SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1))取第几小函数,下拉时ROW(1:1)会变化,变成ROW(2:2)……,其值为1、2……,也就是依次取符合条件的第一小行号、第二小行号……,原公式用的ROW(D1)也是可以的;
INDEX(应付帐款明细表!E:E,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1)))返回E列中取出的行号交叉处的单元格的内容,原公式用的INDEX(A1:I5000,取出的行号,5),最后是5,也就是第五列,其实就是E列,所以可直接用E列来写公式;
最后加了个&"",如果原来是空,即返回空,但如果E列是数值的话,一般不这么用,这样做会将数值转为文本,可以用上面较长点的公式,结果仍为数值。
按补充,支持左拉右拉,用:
=IF(INDEX(应付帐款明细表!$A:$I,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1)),COLUMN(E$1))="","",INDEX(应付帐款明细表!$A:$I,SMALL(IF(应付帐款明细表!$G$1:$G$5000=$J$3,ROW($1:$5000),4^8),ROW(1:1)),COLUMN(E$1)))
还是有点没弄懂 我在琢磨琢磨 谢谢