excel 数组公式 求高手详解{=IF(L3="","",INDIRECT(ADDRESS(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3)),RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)))}这个公式的作用是
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/08 07:49:59
excel 数组公式 求高手详解{=IF(L3="","",INDIRECT(ADDRESS(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3)),RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)))}这个公式的作用是
excel 数组公式 求高手详解
{=IF(L3="","",INDIRECT(ADDRESS(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3)),RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)))}
这个公式的作用是 根据 成绩 自动填入姓名.
其中A3:I22 都是 姓名+成绩 的数据, 现在在L列把成绩列了出来,要求在K列输入这个公式,自动匹配L列的成绩,求高手详解,是详解~~~
ROW($A$3:$I$32) 的值不就是3吗? 为什么我把上述公式中这个字段,换成3,结果就不对了呢?
麻烦给这个公式解释下,
我理解的 indirect(1,1) = A1 单元格的内容
address(1,1) = 代表A1 这个单元格
small(一句数据,2)是寻求这组数据中第二小的数据,可是上述公式我找不到这个2 是哪个地方代表的
if 是个条件判断,这个我基本懂,
ROW($A$3:$I$32) ,既然是 3:32的一个数据组,那么什么时候等于3,什么时候等于4,公式是怎么确定的?
countif()这个我懂
right 这个函数怎么用法?
还有这后面的公式,能给详细解释下吗?
excel 数组公式 求高手详解{=IF(L3="","",INDIRECT(ADDRESS(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3)),RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)))}这个公式的作用是
我不看你的话了 我把公式详细的说一遍
首先是数组公式 输入 修改后要按CTRL+SHIFT+回车
第一层 IF(L3="","",.)
就是如果L3是空那公式就显示空 要不就返回后面的公式 就是 下面这个咯
INDIRECT(ADDRESS(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3)),RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1))
indirect 是引用的意思
ADDRESS是返回一个单元格的地址的意思
连起来就是引用ADDRES返回的单元格里面的数据的意思
address分 行 和列 2个参数
SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3))是你的行
RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)
是你的列
如果行等于1 列等于2
那么INDIRECT(DEERESS(1,2))
就是 1 行 2列 就是B2了
好了 现在INDIRECT addres 说好了 主要讲里面的2个参数返回的原理
SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)),COUNTIF($L$3:L3,L3))
意思是 取出IF($A$3:$I$32=L3,ROW($A$3:$I$32))这里面的第COUNTIF($L$3:L3,L3)小的数字
IF($A$3:$I$32=L3,ROW($A$3:$I$32))意思是如果$A$3:$I$32=L3 那么就返回$A$3:$I$32的行号
这里其实可能不止一个相等 所以返回的是一个数组
后面COUNTIF($L$3:L3,L3) 意思是计算$L$3:L3 里面有几个L3 这里是1个 但走你公式看 下拉后$L$3:L3 会变成4 5 6 那么肯定就不是一个了
结合前面的我理解是返回$A$3:$I$32=L3 里面行号最大的那个行号 COUNTIF($L$3:L3,L3)是相同的数量 SMALL符合条件里面第“ 相同数量” 最小的一个
假设4个相同 那返回第4小的 那么就是最大的咯
下面是列
RIGHT(SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3)),3)-1)
里面SMALL(IF($A$3:$I$32=L3,ROW($A$3:$I$32)*1000+COLUMN($A$3:$I$32)),COUNTIF($L$3:L3,L3))类似上面的解释你应该可以理解
RIGHT意思是取最右面3个
最后减 1 是最外层的 就是RIGHT后减1
不知理解否?