Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1920|回复: 9

[已解决]请帮忙解释一下下面公式的含义

[复制链接]
发表于 2015-12-17 16:35 | 显示全部楼层 |阅读模式
=INDEX(7:7,SMALL((IF(A7:J7<0,100,COLUMN(A:J))),COLUMN(A:J)))&""   Ctrl+enter{:25:}
最佳答案
2015-12-17 17:08
本帖最后由 zjdh 于 2015-12-17 17:38 编辑

正确公式应该是
=INDEX(7:7,SMALL((IF($A$7:$J$7<0,100,COLUMN($A:$J))),COLUMN(A:A)))&""    数组公式
公式解释:
右拉填充,依次取第七行中的>0的数
IF($A$7:$J$7<0,100,COLUMN($A:$J))   若$A$7:$J$7中的值<0则为100,否则取该列的列号
COLUMN(A:A)      等于1,若右拉填充,则变成COLUMN(B:B),等于2,……
SMALL((IF($A$7:$J$7<0,100,COLUMN($A:$J))),COLUMN(A:A))       取最小的数(列号)此处为1,以此类推
INDEX(7:7,x)&""     取第七行中第x个数,并转为文本格式

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2015-12-17 16:50 | 显示全部楼层
本帖最后由 zyouong 于 2015-12-17 16:52 编辑

提取A7至J7 行中小于0的值。 shift  ctrl  enter
回复

使用道具 举报

发表于 2015-12-17 17:08 | 显示全部楼层    本楼为最佳答案   
本帖最后由 zjdh 于 2015-12-17 17:38 编辑

正确公式应该是
=INDEX(7:7,SMALL((IF($A$7:$J$7<0,100,COLUMN($A:$J))),COLUMN(A:A)))&""    数组公式
公式解释:
右拉填充,依次取第七行中的>0的数
IF($A$7:$J$7<0,100,COLUMN($A:$J))   若$A$7:$J$7中的值<0则为100,否则取该列的列号
COLUMN(A:A)      等于1,若右拉填充,则变成COLUMN(B:B),等于2,……
SMALL((IF($A$7:$J$7<0,100,COLUMN($A:$J))),COLUMN(A:A))       取最小的数(列号)此处为1,以此类推
INDEX(7:7,x)&""     取第七行中第x个数,并转为文本格式

回复

使用道具 举报

发表于 2015-12-17 17:42 | 显示全部楼层
若改成
=INDEX(7:7,SMALL((IF(A7:J7<0,100,COLUMN(A:J))),COLUMN(A:A)))&""    数组公式
下拉填充,依次取第七行开始,前七列中,>0的第一个数
回复

使用道具 举报

 楼主| 发表于 2015-12-18 08:19 | 显示全部楼层
{:18:}
回复

使用道具 举报

 楼主| 发表于 2015-12-18 08:35 | 显示全部楼层
zjdh 发表于 2015-12-17 17:08
正确公式应该是
=INDEX(7:7,SMALL((IF($A$7:$J$70的数
IF($A$7:$J$7

公式是没有错的,其实一片单元格区域的公式来着,按照您的讲解就是,后面column(A:J)是根据列的变化而改变成为column(A:A),column(B:B)......那么如果遇到小于零的数据index(7:7,确认列数),中间是如何把负数去掉呢?
回复

使用道具 举报

发表于 2015-12-18 09:55 | 显示全部楼层
本帖最后由 zjdh 于 2015-12-18 10:01 编辑
janey138 发表于 2015-12-18 08:35
公式是没有错的,其实一片单元格区域的公式来着,按照您的讲解就是,后面column(A:J)是根据列的变化而改 ...


你要理解 IF($A$7:$J$7<0,100,COLUMN($A:$J))   的含义  
你具体试一下就明白啦!!
回复

使用道具 举报

 楼主| 发表于 2015-12-24 14:51 | 显示全部楼层
zjdh 发表于 2015-12-17 17:42
若改成
=INDEX(7:7,SMALL((IF(A7:J70的第一个数

试过了,但是不明白原理
回复

使用道具 举报

发表于 2015-12-24 18:41 | 显示全部楼层
你还是再看看3楼的解释吧!
IF($A$7:$J$7<0,100,COLUMN($A:$J))   若$A$7:$J$7中的值<0则为100,否则取该列的列号
若第3 个数<0 ,则上式得到{1,2,100,4,5,6,....}
SMALL((IF($A$7:$J$7<0,100,COLUMN($A:$J))),COLUMN(C:C))   
就为  数组中第3小,即第4个(列)数据,负数不是排除了吗?  
回复

使用道具 举报

 楼主| 发表于 2015-12-25 08:39 | 显示全部楼层
zjdh 发表于 2015-12-24 18:41
你还是再看看3楼的解释吧!
IF($A$7:$J$7

这么一说,明白了,谢谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-24 06:58 , Processed in 0.315579 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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