excel公式看不明白 有没有大神帮我解读一下?
=LOOKUP(ROW(B1)-1,SUMIF(OFFSET($B$1,,,ROW($1:$100)),">0"),A$2:A$100)&""哪位大神能否帮我解读一下这个...
=LOOKUP(ROW(B1)-1,SUMIF(OFFSET($B$1,,,ROW($1:$100)),">0"),A$2:A$100)&""哪位大神能否帮我解读一下这个公司的原理和思路?
展开
3个回答
2020-07-28 · 知道合伙人软件行家
关注
展开全部
不知你的截图下拉为何会出现“0”,按理公式中后面连接了一个“”,就是为去掉这个“0”的。
公式解读:
先看
OFFSET($B$1,,,ROW($1:$100))
就是从B1开始,向下偏移,得到的高度(B列单元格个数)从1 到100的一个内存数组。第1个只有一个数据,B1,第2个2个数据,B1:B2;依次类推,到B1:B100。
再来分析外层的SUMIF,就是offset得到数组条件求和,仍然得到数据,第1个,对B1求和,显然结果为0,第2个得到5,第3个得到8,第4个得到12,第5个及以后的都是12,即得到数组:
{0;5;8;12;12;12;……12}
再分析LOOKUP
查找的第1参数是ROW(B1)-1,公式下拉时,依次得到0,1,2,3,4,5,6,等等
LOOKUP在SUMIF得到数组中去查找这些数值时,找到“小于或等于”查找值的最大值,所以前5 个(0,1,2,3,4),找到小于或等于(0,1,2,3,4)的最大数就是0,位置在第1位,于是返回第3参数中第1个位置的数据,也就是A2中的“仙女棒”;当公式下拉到D6时,LOOKUP查找的第1参数为5了,sumif得到 数组中,小于或等于5的最大值就是5!,排在第2位,所以返回第3参数中的第2个数据,也就是A3中的“地方”。
公式接到D13时,第1参数变成11[ROW(B12)-1],SUMIF得到的数组中“小于或等于”11的最大值,仍是8,在数组中的第3位置,所以返回对应A4中的“挂号费”。好了看全部重复完后的D14,这时第1参数变成12[ROW(B13)-1],在SUMIF得到的数组中“小于或等于”11的最大值就是12,对应的位置在第4位置,所以返回A5的数据,A5中没有数据,公式引用时,返回“0”,后面连接了一个空(“”),所以显示为空。而你的截图却显示为0,不知何故。
公式解读:
先看
OFFSET($B$1,,,ROW($1:$100))
就是从B1开始,向下偏移,得到的高度(B列单元格个数)从1 到100的一个内存数组。第1个只有一个数据,B1,第2个2个数据,B1:B2;依次类推,到B1:B100。
再来分析外层的SUMIF,就是offset得到数组条件求和,仍然得到数据,第1个,对B1求和,显然结果为0,第2个得到5,第3个得到8,第4个得到12,第5个及以后的都是12,即得到数组:
{0;5;8;12;12;12;……12}
再分析LOOKUP
查找的第1参数是ROW(B1)-1,公式下拉时,依次得到0,1,2,3,4,5,6,等等
LOOKUP在SUMIF得到数组中去查找这些数值时,找到“小于或等于”查找值的最大值,所以前5 个(0,1,2,3,4),找到小于或等于(0,1,2,3,4)的最大数就是0,位置在第1位,于是返回第3参数中第1个位置的数据,也就是A2中的“仙女棒”;当公式下拉到D6时,LOOKUP查找的第1参数为5了,sumif得到 数组中,小于或等于5的最大值就是5!,排在第2位,所以返回第3参数中的第2个数据,也就是A3中的“地方”。
公式接到D13时,第1参数变成11[ROW(B12)-1],SUMIF得到的数组中“小于或等于”11的最大值,仍是8,在数组中的第3位置,所以返回对应A4中的“挂号费”。好了看全部重复完后的D14,这时第1参数变成12[ROW(B13)-1],在SUMIF得到的数组中“小于或等于”11的最大值就是12,对应的位置在第4位置,所以返回A5的数据,A5中没有数据,公式引用时,返回“0”,后面连接了一个空(“”),所以显示为空。而你的截图却显示为0,不知何故。
追答
昨天的回答应该详细了吧,offset得到的结果不是一个数,而是数组!数组是通过后面的高度不同产生的,row(1:100)得到的是数组——1到100的,所以offset的结果就是100个数据组成的数组,第1个是从B1开始的一行数据,就是“数量”,第2个数据是B1:B2两数据,依次类推。你的截图中显示结果为“数量”,就是显示的数组中第1个数据——数量。之所以要以第1行开始(第1行不是数字),用sumif条件求和时,就能先得到结果为0的数据,以达到先取到第1个目标数据A2的目的。
sumif中的第3参数忽略时,就是对第1参数做求和区域。公式中有求和条件啊,“>0",就是求和条件。
展开全部
若是你一个函数也不知道就没有什么好解释了啊!估计很难说了,只能自己一个一个的函数先学习好了再去研究研究,现在只能是记住公式套吧。
若是哪一个函数环节不清楚,可以对具体的问题作探讨探讨
若是哪一个函数环节不清楚,可以对具体的问题作探讨探讨
追问
这几个函数单独用 我知道是什么意思
放在一起的话 不知道他的原理是什么
OFFSET($B$1,,,ROW($1:$100))不明白为什么
追答
这个是按B1定位开始,向下数1到100行组成的数组
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
ROW($1:$100)是个常数数组{1;2;3;...........100}
OFFSET($B$1,,,ROW($1:$100))结果也是一个数组:{{数量};{数量;5};{数量;5;3};{数量;5;3;4};{数量;5;3;4}..............{数量;5;3;4}}
SUMIF(OFFSET($B$1,,,ROW($1:$100)),">0")是对数组的条件示和。{0;5;8;12;12.......12}
后面就好理解了,lookup函数的应用。
OFFSET($B$1,,,ROW($1:$100))结果也是一个数组:{{数量};{数量;5};{数量;5;3};{数量;5;3;4};{数量;5;3;4}..............{数量;5;3;4}}
SUMIF(OFFSET($B$1,,,ROW($1:$100)),">0")是对数组的条件示和。{0;5;8;12;12.......12}
后面就好理解了,lookup函数的应用。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询