
excel
怎么相同问题部了两次...1、假设你的数据工作表名为:sheet1,定义名称:按CTRL+F3,名称输入 data,值输入 =OFFSET(Sheet1!$A$1:$C$1,,,MATCH(9.9E+307,Sheet1!$C:$C)) 确定。2、数据--数据透视表和数据透视图---下一步,在出现的选定区域里输入 =data ,点击“完成”。3、将你的“型号”、“日期”项拖进行字段,数量拖进数据项。点击“型号”项右下角的下拉三角形,把“空白”的勾去掉。4、增加或删除了sheet1的数据后,右键点击“数据透视表”,点“刷新”就自动按型号统计了。 =====================================MATCH(9.9E+307,Sheet1!$C:$C)) 意思是找出有数据的最后一行的行号,因为你的C列是数量,是数字,而9.9e+307在
excel中是个非常大的数(
excel极限了),所以用match来找9.9e+307这个最大的数,当然在你的数量一列中是找不到这么大的数的,所以match就返回最后一个数据,也就是C列最后的数据的行号。结合offset使用就返回你的数据区域了,定义了名称后,这个区域就是动态变化的,通过这种方法做的透视表就是动态数据透视表,只需刷新下表格结果就根着变了,不用再做一次透视了! ======================================sort=offset(a1,1,,counta(a:a)-1,)先解释counta(a:a),这是求A列中非数字型单元格的个数,如果你A列是姓名之类的数据就可用counta,如果是日期或者其它数字就应用count()。定义的sort名称是求的数据区域,这个区域是以A2开始,行数为A列中文本型单元格个数-1。其实以你的情况,A列中有空单元格,这种方法根本不能求到A列的数据区域!!而应该用我给你的match(9.9E+307,$C:$C)函数!index(sort,small(if(match(sort,sort,0)=row(sort)-1,row(sort)-1),row(1:1)))这个公式本意是求不重复的数据,if(match(sort,sort,0)=row(sort)-1,row(sort)-1)如果,match找到的数据位置和行号-1相同就返回行号-1,small(if(match(sort,sort,0)=row(sort)-1,row(sort)-1),row(1:1))求不重复数据的行号的第一个最小值,公式下拉就是第二个,第三个最小值...最后用index来返回数据。不明白你可以抹黑公式,按F9查看中间结果。