EXCEL请解释这段函数=INDEX(C:C,SMALL(IF($B$1:$B$1000=$J$1,ROW($B$1:$B$1000),4^8),ROW(A1)))&""
越详细越好最好条理清晰,例如:1.index(c:c,....)是什么意思;2.small(......)是求什么的;3.if(............)这段是求什么的;4.row(A1)是怎么来的;
不知道的请不要回答,感谢配合! 展开
1、index(c:c,x)取c列第x单元。
2、small(a,b)取数组a中第b小的值。
3、if(a,b,c)a为真取b值,a为假,取c值。
4、row(A1)取a1的行号即1,往下拉变row(A2)=2,用这个的目的就是在公式下拉时产生一个序列数。
5、&""数字转文本,在这里的作用是避免公式下拉超过最后一个可提取数据时在单元格内产生0。
6、本公式为数组公式,需按ctrl+shift+enter完成输入。
7、4^8即4的8次方=65536。
8、本公式作用是提取b列等于j1对应的c列值。
则返回的结果是:如果B列1到1000行中有数据等于J1单元格的值,则D1中显示B列中第1个等于J1的单元格所在行的C列单元格的值,D2中显示B列中第2个等于J1的单元格所在行的C列单元格的值,依次类推。
扩展资料:
Excel文档的功能包括:电子表格、图表、数据库。Microsoft Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件。
Excel 数据记录与整理:孤立的数据包含的信息量太少,而过多的数据又难以理清头绪。制作成表格是数据管理的重要手段。
在一个Excel文件中可以存储许多独立的表格,我们可以把一些不同类型但是有关联的数据存储到一个Excel文件中,这样不仅可以方便整理数据,还可以方便我们查找和应用数据。后期还可以对具有相似表格框架,相同性质的数据进行合并汇总工作。
二、Excel 数据加工与计算:
在现代办公中对数据的要求不仅仅是存储和查看,很多时候是需要对现有的数据进行加工和计算。例如,每个月我们会核对当月的考勤情况、核算当月的工资、计算销售数据等。在Excel中主要应用公式和函数等功能来对数据进行计算。
三、Excel 数据统计与分析:要从大量的数据中获得有用的信息,仅仅依靠计算是不够的,还需要用户沿着某种思路运用对应的技巧和方法进行科学的分析,展示出需要的结果。
3.IF($B$1:$B$1000=$J$1,ROW($B$1:$B$1000),4^8):如果B列1到1000行中有数据等于J1单元格的值,则返回该行的行号,否则返回4的8次方,一个很大的数,65536。
2.SMALL(array, k):返回数据集中第 k 个最小值。使用此函数可以返回数据集中特定位置上的数值。例如SMALL(A2:A10,4) 返回A列中第四个最小值,SMALL(B2:B10,2)返回B列中第二个最小值。
1.INDEX(array, row_num, [column_num]):返回表格或数组中的元素值,此元素由行号和列号的索引值给定。Index(C:C,k)返回的是C列K行单元格的值。
最后的&""将index公式的计算结果转换为文本值。
这个公式是数组公式,需要使用shift+ctrl+enter来输入。
嵌套起来,设D1=INDEX(C:C,SMALL(IF($B$1:$B$1000=$J$1,ROW($B$1:$B$1000),4^8),ROW(A1)))&"",然后向下复制到D1000,则返回的结果是:
如果B列1到1000行中有数据等于J1单元格的值,则D1中显示B列中第1个等于J1的单元格所在行的C列单元格的值,D2中显示B列中第2个等于J1的单元格所在行的C列单元格的值,依次类推
首先这是个数组公式,(所以C:C)实现的功能是:如果B列中的数值等于J1单元格的,则依次生成B列对应的C列的数据。
先解释Row(A1),这个函数是生成1.2.3.4这样一个序列,A1是相对引用,row(A1)是A1的行号,也就是1;往下拖就是A2,行号是2,以此类推
If函数,是假设B1(依次至B1000)等于J1,那么就返回B1的行号(Row(B1)),假设不等于,则放回4^8(65536,Excel最大行号)
Small函数是将If函数的结果排序,也就是实现只要B1等于J1,则行号(1-1000)以此排在最前面;如果不等于,则行号(65536)排在后面;
index函数,返回C列对应的行号(也就是Small函数排序后的前最多1000个行号)对应的值
如果还是不懂,建议先去了解下数组公式
例如,index(B2:C6,1,1)就是返回B2:C6这个区域,第1行,第1列的值,也就是B2的值。
small(),是返回比较区域中的第n个较小值。
例如small(a1:b3,2)是返回a1:b3,这个区域中的第2个较小值
if()是条件判断,有三个参数,第一个是条件,第二个是如果为真是的值,第三个是如果条件为假时的值。
row()是求行号
其实你这个公式是错误无意义的。简单的事搞的复杂化了。
先从if里面开始,IF($B$1:$B$1000=$J$1,ROW($B$1:$B$1000),4^8),条件是$B$1:$B$1000=$J$1 实际上等同于判断B1=J1,这样写没有意义。
如果为B1=J1,则求ROW($B$1:$B$1000),这样写也没有意义,实际求出来的是B1的行号,结果是1 。如果B1不等于J1,则结果是4的8次方,就是65536。
small(if(),row(a1)) = small(if(),1)
if判断出来,要么等于1,要么等于65536,就只有一个值,再small()也没有意义。
简化以后的结果,如果B1=J1
INDEX(C:C,1),就是C1的值
如果B1<>J1 ,INDEX(C:C,65536),就是C65536的值,
如果是这样的话,直接用一个If()就搞定了。
if(B1=J1,c1,c65536)
index(c:c,x)取c列第x单元;
small(a,b)取数组a中第b小的值;
if(a,b,c)a为真取b值,a为假,取c值;
row(A1)取a1的行号即1,往下拉变row(A2)=2,用这个的目的就是在公式下拉时产生一个序列数;
&""数字转文本,在这里的作用是避免公式下拉超过最后一个可提取数据时在单元格内产生0
本公式为数组公式,需按ctrl+shift+enter完成输入
4^8即4的8次方=65536
本公式作用是提取b列等于j1对应的c列值