甲乙丙丁戊己共6列数据,现在要在I2位置计算出,满足A列数值为1的B列的和;然后在J2位置计算出满足A列数值为1的C列的和;依次向右类推,分别计算出满足这个要求的各列的和。再然后,往下行,I3行位置是计算出满足A列数值为2的B列的和,往下也依次类推,一直到9。最终要形成一个9*6的矩阵公式。一个一个编太麻烦了,就想用数组,但是现在还不会用,希望能得到入门的知识,以后慢慢摸索也可以
绝大部份的数组公式拖拉时一般都是只能返回数组中的其中一个值,而不会把整个数组的值反应在一个单元格中的。请把公式发上来看看,并说明公式的要求要实现的效果,这样看不到公式问题不好解决,且最好能把数据源截图发上来看看。
以举个例子作为参考:
公式中的数组分常量数组与变量数组,如以下的就是常量数组,它在公式的运行过程中是不会改变的
{3;1;5;4;2}
如以下升序排序公式,在下拉时每下拉一行返回数组中的一个值,则生成的结果是 1 2 3 4 5
=SMALL({3;1;5;4;2},ROW(A1))
如果隆序的,变为5 4 3 2 1 ,则公式变为这样下拉:
=LARGE({3;1;5;4;2},ROW(A1))
变量数组其中的一种方式就是直接通过引用单元格的值,如A1:A5获得,如果A1:A5的值改变,那么这个变量数组的值也会跟着改变,这只是其中的一个举例,变量数组还有共它的生成形式,要视乎公式的要求而定。
还是没弄出来
追答亲,引用我上面回答中的一点要求:
请把公式发上来看看,并说明公式的要求要实现的效果,这样看不到公式问题不好解决,且最好能把数据源截图发上来看看
甲乙丙丁戊己共6列数据,现在要在I2位置计算出,满足A列数值为1的B列的和;然后在J2位置计算出满足A列数值为1的C列的和;依次向右类推,分别计算出满足这个要求的各列的和。再然后,往下行,I3行位置是计算出满足A列数值为2的B列的和,往下也依次类推,一直到9。最终要形成一个9*6的矩阵公式。一个一个编太麻烦了,就想用数组,但是现在还不会用,希望能得到入门的知识,以后慢慢摸索也可以。图见问题中
追答提供两种方式解决问题,都不需要用数组公式:
我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。
I2输入公式右拉再下拉即可。
=SUMIF($A:$A,ROW(A1),B:B)
如果要像题目要求的那样比如第一行条件是1,第二行是3,第三行是9,第四行是5,假定第五行是7,第六行是2,第七行是6,第八行是4,第九行是8,要是像这样没规律的变化,只能是事先手工输入一个对应区域再到公式中引用才能解决,如果条件不多的,也可不必输入而直接把区域整合为一个常量数组,不必另外找地文输入对应的区域。
这是通过读取图中绿色部份的Q与R列返回统计条件的公式,可自行在绿色部份添加条件对应关系,公式自动适应。
=SUMIF($A:$A,VLOOKUP(ROW(A1),$Q:$R,2,),B:B)
如果条件少的,像现在问题中这样在10个以内的,可以直接把绿色部份的条件写为常量数组,这样就可以不必建立绿色部份的Q和R列。
=SUMIF($A:$A,VLOOKUP(ROW(A1),{1,1;2,3;3,9;4,5;5,7;6,2;7,6;8,4;9,8},2,),B:B)
这个不是数组公式,只是涉及到绝对地址(加$符号)和相对地址
比如:右拉时,希望A:A不变,要用$A:$A
1、2、3。。。可以用row(A1)代替,下拉时会递增追问
我知道不是数组公式,这个公式只是想表达一下我的目的,就是要算满足条件的和
我知道不是数组公式,这个公式只是想表达一下我的目的,就是要算满足条件的和
=SUMIF($A:$A,ROW(A1),B:B)
向右拉再向下拉填充。追问
往下行可以这样 往右行怎么弄?
往下行可以这样 往右行怎么弄?
追答将光标移到I2单元格的右下角小黑点处,光标变为十字形时按住左键向右拉至相应列处再向下拉即可。
追问我的意思是如果排列的很规则可以拉,如果排列不规则的话,比如第一行条件是1,第二行是3,第三行诗9,第四行是5,这样的话就不能拉了,就需要用数组公式,不然就得一个一个改,很麻烦